C# 基于子列表项创建iGroup

C# 基于子列表项创建iGroup,c#,C#,圣诞老人 就说我上过以下课程: 公共类ObjectA { 公共字符串属性{get;set;} 公共列表ListProperty{get;set;} } 还有一个像这样的集合类: 公共类集合B { 公共列表集合{get;set;} } 这是如此使用的: 公共作废方法c(CollectionB coll) { coll.Add(新对象) { PropertyA=“快乐” ListProperty=新列表{“foo”,“bar”} }); coll.Add(新对象) { PropertyA=“圣诞

圣诞老人

就说我上过以下课程:

公共类ObjectA
{
公共字符串属性{get;set;}
公共列表ListProperty{get;set;}
}
还有一个像这样的集合类:

公共类集合B
{
公共列表集合{get;set;}
}
这是如此使用的:

公共作废方法c(CollectionB coll)
{
coll.Add(新对象)
{
PropertyA=“快乐”
ListProperty=新列表{“foo”,“bar”}
});
coll.Add(新对象)
{
PropertyA=“圣诞节”
ListProperty=新列表{“yee”、“har”、“foo”}
});
coll.Add(新对象)
{
PropertyA=“乡亲”
ListProperty=新列表{“bar”、“bah”、“humbug”}
});
}
如何使用ObjectA的每个
PropertyList
属性字符串作为键(
“foo”
“bar”
等),从CollectionB创建
iGroup


组中的重复项不会困扰我。

对于这些设置,我优先选择查询语法:

list.SelectMany(t => t.ListProperty.Select(q => new { ObjectA = t, Prop = q  })).GroupBy(t => t.Prop, w=>w.ObjectA)
from a in coll from p in a.ListProperty group a by p

旁注:上面将创建一个
IEnumerable
来获得一个列表,只需使用
(从a.ListProperty组a中的a coll中的p到a.ListProperty组中的p)。ToList()

你知道,我现在感觉自己就像一只真正的小丑鞋。我甚至没有考虑使用查询语法,主要是因为我甚至需要8年的时间来使用它。现在这似乎是显而易见的;)干杯,伙计。干杯,但我认为@Me.Name的回答可能更简洁。我一定会写下你的一个,以备将来使用:)