2014-02-06 48 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

相關問題