C# 可能在Linq中找到了一个功能。具有多个字段的Groupby
这两排似乎做了同样的事情。可以使用plussign(+)代替匿名类型C# 可能在Linq中找到了一个功能。具有多个字段的Groupby,c#,linq,group-by,C#,Linq,Group By,这两排似乎做了同样的事情。可以使用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()); 现在我的问题是: plussign(+)是否是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记录的内容?请小心:)
例如,如果x.FIELD1
和x.FIELD2
是string类型的属性,那么您只是根据连接这两个属性的结果进行分组。。。。这可能不是你想要的。这同样适用于其他类型的课程,但字符串中的示例仍然:
给定Field1
=“ABC”和Field2
=“DEF”,您的分组将使用键“ABCDEF”,对吗
那么,如果您有Field1
=“AB”和Field2
=“CDEF”呢?非常不同的值,但您的分组仍然是“ABCDEF”
您应该坚持使用匿名类型进行分组(仅在方法中使用时),或者在外部需要时,使用新类、结构或元组
编辑:另一个快速注意事项:在执行了
GroupBy
(不带投影)之后,看看您得到的键值。。。。它应该给你一个我的意思的例子。谢谢@baldric的解释,我现在明白了区别!