Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可能在Linq中找到了一个功能。具有多个字段的Groupby_C#_Linq_Group By - Fatal编程技术网

C# 可能在Linq中找到了一个功能。具有多个字段的Groupby

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记录的内容?请小心:

这两排似乎做了同样的事情。可以使用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记录的内容?

请小心:) 例如,如果
x.FIELD1
x.FIELD2
是string类型的属性,那么您只是根据连接这两个属性的结果进行分组。。。。这可能不是你想要的。这同样适用于其他类型的课程,但字符串中的示例仍然:

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

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

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


编辑:另一个快速注意事项:在执行了
GroupBy
(不带投影)之后,看看您得到的键值。。。。它应该给你一个我的意思的例子。

谢谢@baldric的解释,我现在明白了区别!