林克合并列表

本文关键字:列表 合并 林克 | 更新日期: 2023-09-27 18:37:14

我的类:

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

我有IEnumerable<Foo>.我想按 A 分组List<Foo>并获取条形列表,该列表包含分组的条形图中的所有元素。

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

可以使用 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 中的EqualsGetHashCode