3

这两行似乎做同样的事情。可以使用加号 (+) 代替匿名类型。

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 记录的吗?

4

1 回答 1

7

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

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

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

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

编辑:另一个快速说明:执行GroupBy(没有投影)之后,看看你得到的键值......它应该向你展示我的意思的一个例子。

于 2013-02-11T14:11:12.343 回答