也许在林克身上发现了一个特征.具有多个字段的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());

现在我的问题是:

加号(+)是GroupBy的文档吗?

注意这一点:)例如,如果x.FIELD1x.FIELD2是字符串类型的属性,那么您只是根据连接这两个…的结果进行分组。。。。这可能不是你想要的。当然,这同样适用于其他类型,但字符串中的一个例子仍然是:

给定Field1="ABC"和Field2="DEF",您的分组将使用关键字"ABCDEF",对吗?

那么,如果您有Field1="AB"和Field2="CDEF"呢?非常不同的值,但您的分组仍然是"ABCDEF"。。。

您应该坚持使用匿名类型进行分组(仅在方法中使用时),或者在外部需要时,使用新的类、结构或使用Tuple。

EDIT:另一个快速提示:在执行GroupBy(没有投影)后,查看您正在获得的键值。。。。它应该向你展示一个我的意思的例子。

最新更新