Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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# 将列表转换为组_C#_Linq - Fatal编程技术网

C# 将列表转换为组

C# 将列表转换为组,c#,linq,C#,Linq,我有一个问题:我想使用这样的代码: var groups = shouldBeGroup ? items.GroupBy(p => p.Prop) : <a group with all items> foreach(var gr in groups)... var groups=shouldBeGroup?items.GroupBy(p=>p.Prop): foreach(组中的var gr)。。。 如何实施第二部分?我想要一个包含所有项目的组,但GroupBy根据指定的

我有一个问题:我想使用这样的代码:

var groups = shouldBeGroup ? items.GroupBy(p => p.Prop) : <a group with all items>
foreach(var gr in groups)...
var groups=shouldBeGroup?items.GroupBy(p=>p.Prop):
foreach(组中的var gr)。。。
如何实施第二部分?我想要一个包含所有项目的组,但GroupBy根据指定的属性返回多个组

谢谢

items.Group(p => p.Prop)
这将返回
IEnumerable

其中,TProp是您分组所依据的Prop属性的类型,TItem是项的类型

因此
变量的类型就是
IEnumerable
,因此无论您分配给它什么,都必须是该类型。因此,如果
shouldBeGroup
为真,那么您将评估
items.GroupBy(p=>p.Prop)

因此,如果shouldBeGroups为false,则需要一个返回相同类型的内容的表达式
IEnumerable
items.GroupBy(i=>//这里需要提供相同类型的p.Prop的常量值)

因此,假设p.Prop的类型为string

我们会这样做

var grouped = shouldBeGrouped ? items.GroupBy(p => p.Prop) : items.GroupBy(p => "stringConstant");
因为您为每个项目提供了一个常量值,它们将全部显示在同一组中。但是rememebr p.Prop的类型将指示第二个GroupBy表达式中常量值所需的类型