使用LINQ在列表列表上聚合

rom*_*mar 1 c# linq

这是我的代码的简化版本:

public enum Error
{
  Error1,
  Error2,
  Error3,
}

public class DataUnit
{
  public int Data; // Any Data
  public List<Error> Errors { get; private set; }
}

List<DataUnit> DataList;
Run Code Online (Sandbox Code Playgroud)

我想用LINQ扁平化DataList和获得的总数Error1,Error2以及Error3.

谢谢.

Sel*_*enç 5

dataList
.SelectMany(x => x.Errors)
.GroupBy(x => x)
.Select(g => new { Value = g.Key, Count = g.Count() })
Run Code Online (Sandbox Code Playgroud)