2

我的课:

    public class Foo
    {
        public int A { get; set; }
        public List<Bar> Bars { get; set; }
    }

我有IEnumerable<Foo>。我想List<Foo>按 A 分组,并获得 Bars 列表,其中包含 Bars 中的所有元素进行分组。

所以最终的 Foo.Bars 应该包含组中 Bar 的所有元素

linq可以吗?

4

1 回答 1

5
var result = foos.GroupBy(f => f.A)
                 .SelectMany(grp => grp.Select(f => f.Bars));

正如 Rawling 所提到的,这不会返回 a 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。请注意,您可能需要覆盖Equals and GetHashCodein class Bar

于 2012-06-15T13:14:25.037 回答