gpt4 book ai didi

c# - 使用 LinQ 合并 2 个不同类型的列表

转载 作者:行者123 更新时间:2023-11-30 19:24:28 25 4
gpt4 key购买 nike

我有 2 个列表。如果两者都是string类型.我可以使用类似的东西合并它们:

List<string> myCars = new List<String> { "Yugo", "Aztec", "BMW" };
List<string> modeList = new List<String> { "BMW", "Saab", "Aztec" };
var carConcat = (from c in myCars select c)
.Concat(from c2 in modeList select c2);

但是,如果我有一个 List<string>,我怎样才能(快速)获得类似的结果? , 一个 List<int>

List<string> myCars = new List<String> { "Yugo", "Aztec", "BMW" };
List<int> modeList = new List<int> { 1, 2, 3 };

最佳答案

首先,你应该注意到 Enumerable.ConcatIEnumerable<T> 的扩展方法和 List<T>实现这个接口(interface)。因此,您不需要为此使用 LINQ 语法:

// When both lists are of string...
IEnumerable<string> all = myCars.Concat(modeList);

另一方面,如果您想混合使用两个列表,但其中一个具有不同的泛型类型,那么您仍然可以混合使用它们,将所有项目转换为 object。 :

IEnumerable<object> all = myCars.Cast<object>().Concat(modeList.Cast<object>());

...或自 IEnumerable<T>covariant :

IEnumerable<object> all = ((IEnumerable<object>)myCars).Concat(modeList.Cast<object>());

上述解决方案的主要缺点是,在极少数极端情况下,您会希望将引用存储为 object ,因为如果您想访问它们的成员(即方法、属性...),您将强制您的代码稍后再次将它们向下转换为实际类型。

关于c# - 使用 LinQ 合并 2 个不同类型的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36759593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com