2014-02-06 46 views
0

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

例如:

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

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

请注意我申请了不同的匿名类型名单。

回答

4

MSDN

由于上匿名类型的Equals和GetHashCode方法在Equals和属性的GetHashCode方法的术语的定义相同,匿名类型的两个实例是相等只有所有它们的性质等于。

+0

要强调:它们必须是相同的类型。新{X = 1,Y = 2}!=新{Y = 2,X = 1},因为它们是不同的类型。一些代码示例可能会澄清您的报价。 – Onots

+0

@Onots,“它们必须是相同的类型” - 绝对如引述所述:“**相同**匿名类型的两个实例...” – Joe

相关问题