我的類:LINQ的合併列表
public class Foo
{
public int A { get; set; }
public List<Bar> Bars { get; set; }
}
我有IEnumerable<Foo>
。我希望得到List<Foo>
由A分組,並獲得Bars列表,其中包含Bars中的所有元素。
所以最終Foo.Bars應該包含組
是否有可能與LINQ酒吧的所有元素?
我的類:LINQ的合併列表
public class Foo
{
public int A { get; set; }
public List<Bar> Bars { get; set; }
}
我有IEnumerable<Foo>
。我希望得到List<Foo>
由A分組,並獲得Bars列表,其中包含Bars中的所有元素。
所以最終Foo.Bars應該包含組
是否有可能與LINQ酒吧的所有元素?
var result = foos.GroupBy(f => f.A)
.SelectMany(grp => grp.Select(f => f.Bars));
正如Rawling已經提到的,這不是返回一個IEnumerable<Foo>
,那麼試試這個:
IEnumerable<Foo> result =
foos.GroupBy(f => f.A)
.Select(grp => new Foo() {
A = grp.Key,
Bars = grp.SelectMany(ff => ff.Bars).Distinct().ToList()
});
我不知道你是否希望的Bars
或不是一個獨特的名單。請注意,您可能需要覆蓋類Bar
中的Equals
和GetHashCode
。
你的源'IEnumerable'不是'Foos'已經那樣嗎?你的來源必須是不同的類型,對吧?來源實際上是什麼樣的? –
bluevector
不,我想要獲取相同類型的集合,但要合併列表 –