c# - 附加/连接两个 IEnumerable 序列

标签 c# ienumerable unions

我有两组数据行。它们都是 IEnumerable。我想将这两个列表附加/连接到一个列表中。我确定这是可行的。我不想做一个 for 循环并注意到两个列表上有一个 Union 方法和一个 Join 方法。有什么想法吗?

最佳答案

假设您的对象属于同一类型,您可以使用 UnionConcat。请注意,与 SQL UNION 关键字一样,Union 操作将确保消除重复项,而 Concat(如 UNION ALL) 将简单地将第二个列表添加到第一个列表的末尾。

IEnumerable<T> first = ...;
IEnumerable<T> second = ...;

IEnumerable<T> combined = first.Concat(second);

IEnumerable<T> combined = first.Union(second);

如果它们属于不同的类型,那么您必须选择它们成为共同的东西。例如:

IEnumerable<TOne> first = ...;
IEnumerable<TTwo> second = ...;

IEnumerable<T> combined = first.Select(f => ConvertToT(f)).Concat(
                          second.Select(s => ConvertToT(s)));

其中 ConvertToT(TOne f)ConvertToT(TTwo s) 表示以某种方式转换 TOne 实例的操作(和 TTwo,分别)转换为 T 的实例。

关于c# - 附加/连接两个 IEnumerable 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4961910/

相关文章:

c# - .NET C# 线程异常处理

.net-3.5 - 本地化 IEnumerable 的最佳方法是什么?

c# - 我很难将我的 IEnumerable<T> 实现切换到 ICollection<T>

c++ - union 的使用定义明确了吗?

c# - 将 C 转换为 C#

c# - 试图找到一种算法来检测图像中的矩形

c# - 如何将 'System.IO.IsolatedStorage.IsolatedStorageFileStream' 转换为 ImageSource?

c++ - 如何从 C++ 中的内部 union 访问类成员

c# - 在 C# 中,一个类可以返回两种不同类型的对象,需要循环遍历它们

c# - 从 List<MyType> 到 IEnumerable<MyType> 返回到 List<MyType> 的转换无效,为什么?