这两行似乎做了同样的事情.可以使用plussign(+)代替匿名类型.
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());
Run Code Online (Sandbox Code Playgroud)
现在我的问题:
是否为GroupBy记录了plussign(+)的内容?
小智 7
小心这个:)例如x.FIELD1,如果x.FIELD2是类型字符串的属性,你只是通过连接两个的结果分组....这可能不是你想要的.同样适用于其他类型的课程,但仍然是字符串中的示例:
给定Field1="ABC"和Field2="DEF",你的分组将使用"ABCDEF"键,对吗?
那么如果你有Field1="AB"和Field2="CDEF"怎么办?非常不同的价值观,但你的分组仍然是"ABCDEF"......
您应该坚持使用匿名类型进行分组(仅在方法中使用),或者在外部需要时,使用新的类,结构或使用元组.
编辑:另一个快速说明:执行完GroupBy(没有投影)后,看看你得到的关键值......它应该向你展示我的意思的一个例子.