c# - LINQ 从 4 个 IEnumerable 列表中选择不同的

标签 c# linq ienumerable distinct

想象四个列表,都至少有这个 Id 字符串属性,但可能有其他属性:

public class A //or B, C, D
{
    public string Id { get; set; }
    //..other properties
}

//so:  
List<A> a1 = new List<A>();
List<B> a2 = new List<B>();
List<C> a3 = new List<C>();
List<D> a4 = new List<D>();

我想在以下位置选择所有不同的 ID: a1,结合a2,a3,a4

我认为 LINQ 语法是理想的,但如何将它们组合成具有单个字符串属性的 IEnumerable 结果,例如具有类 A 定义的东西。

最佳答案

因为它们是不同的类型,我会先选择Id 属性 来得到一个IEnumerable,然后连接结果:

var query = a1.Select(a=> a.Id)
              .Concat(a2.Select(b=> b.Id))
              .Concat(a3.Select(c=> c.Id))
              .Concat(a4.Select(d=> d.Id))
              .Distinct();

关于c# - LINQ 从 4 个 IEnumerable 列表中选择不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/968281/

相关文章:

java - 从 Java 应用程序调用 C# 库 : Process is terminated due to StackOverflowException

c#循环遍历枚举的所有字段,从字符串数组中赋值

First() 与 Last() 在 SortedDictionary 上的性能

c# - 按键名从字典中删除键

c# - IEnumerable 不在 foreach 中枚举

c# - 在可序列化字典上使用 foreach 语句

c# - Entity Framework 寻找错误的列

c# - 如何将 Matrix4 或四元数转换为以度为单位的角度

c# - 如何创建一个将具有可以从另一个类读取的字段的线程

c# - 结合 LINQ 语句提高效率