这两行似乎做同样的事情。可以使用加号 (+) 代替匿名类型。
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());
现在我的问题:
加号 (+) 是为 GroupBy 记录的吗?
请注意这一点:) 例如,如果x.FIELD1
和x.FIELD2
是字符串类型的属性,那么您只是按连接两者的结果进行分组......这可能不是您想要的。当然,这同样适用于其他类型,但字符串中的示例仍然存在:
给定Field1
= "ABC" 和Field2
= "DEF",您的分组将使用键 "ABCDEF",对吗?
那么如果你有Field1
= "AB" 和Field2
= "CDEF" 呢?非常不同的值,但你的分组仍然是“ABCDEF”......
您应该坚持使用匿名类型进行分组(仅在方法中使用时),或者在外部需要时,使用新类、结构或使用元组。
编辑:另一个快速说明:执行GroupBy
(没有投影)之后,看看你得到的键值......它应该向你展示我的意思的一个例子。