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表达式中常量值所需的类型