Distinct()如何在List<>上工作?匿名类型?

时间:2014-02-06 06:17:54

标签: c# linq-to-objects anonymous-types

Distinct()如何在List<>上工作?匿名类型?它只是做一个属性比较?还是会一直返回相同的列表?

示例:

 List<SomeObject> list;
 ....
 ....

 var result = list
           .Where(i => i.Condition)
           .Select(i => new 
               {
                  Name = i.Name,
                  Date = i.Date
               });
           .Distinct()
           .ToList()  

请注意我在匿名类型列表中应用了distinct。

1 个答案:

答案 0 :(得分:4)

来自MSDN

  

因为匿名类型上的Equals和GetHashCode方法是根据属性的Equals和GetHashcode方法定义的,所以同一匿名类型的两个实例只有在它们的所有属性相等时才相等。