2013-02-11 61 views
3

這兩行似乎也是一樣的。可以使用plussign(+)來代替匿名類型。也許在Linq中找到了一個功能。有多個字段的Groupby

var newlist1 = list.GroupBy(x => x.FIELD1 + x.FIELD2).Select(y => y.First()); 

var newlist2 = list.GroupBy(x => new {x.FIELD1, x.FIELD2}).Select(y => y.First()); 

現在我的問題:

是在plussign(+)的東西多數民衆贊成記錄了的GroupBy?

回答

7

要小心這個:) 例如,如果x.FIELD1x.FIELD2都是字符串類型的屬性,你只是通過連接兩者的結果....這可能不是你想要的分組。同樣適用於其他類型的過程,但字符串仍然是一個示例:

鑑於Field1 =「ABC」和Field2 =「DEF」,您的分組將使用鍵「ABCDEF」,對吧?

那麼如果你有Field1 =「AB」和Field2 =「CDEF」?非常不同的值,但您的分組仍然是「ABCDEF」...

您應該堅持使用匿名類型進行分組(僅在方法中使用時),或者需要外部新建類,結構或利用一個元組。

編輯:另一個要點:您已執行後GroupBy(不投影),看看你所得到的鍵值....它應該告訴你我的意思的例子。

+0

謝謝@baldric爲您解釋,我現在看到的區別! – 2013-02-11 14:27:10

相關問題