2013-02-11 63 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

相关问题