LINQ选择与4个IEnumerable列表不同

CRi*_*ice 2 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>();
Run Code Online (Sandbox Code Playgroud)

我想选择所有DISTINCT ID:a1,结合a2,a3和a4

我认为LINQ语法是理想的,但是如何将它们与具有单个字符串属性的IEnumerable结果相结合,例如具有类A定义的内容.

CMS*_*CMS 9

由于它们是不同的类型,我首先选择Id属性来获取IEnumerable <string>,然后连接结果:

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();
Run Code Online (Sandbox Code Playgroud)

  • 在我看来,这比使用含糖语法更具可读性...... (2认同)