使用LINQ对列表的列表进行聚合

本文关键字:列表 LINQ 使用 | 更新日期: 2023-09-27 18:18:54

下面是我的代码的简化版本:

public enum Error
{
  Error1,
  Error2,
  Error3,
}
public class DataUnit
{
  public int Data; // Any Data
  public List<Error> Errors { get; private set; }
}
List<DataUnit> DataList;

我想使用LINQ来平化DataList,并得到Error1, Error2Error3的总数。

谢谢。

使用LINQ对列表的列表进行聚合

dataList
.SelectMany(x => x.Errors)
.GroupBy(x => x)
.Select(g => new { Value = g.Key, Count = g.Count() })

您可以使用Linq的selectMany()语句:

DataList.SelectMany(list => list.Errors).Where(error => error == Error.Error1).Count()