这两行似乎做同样的事情。可以使用加号 (+) 代替匿名类型。
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(没有投影)之后,看看你得到的键值......它应该向你展示我的意思的一个例子。