使用LINQ在列表列表上聚合

时间:2014-08-21 10:13:09

标签: 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;

我想使用LINQ来展平DataList并获得Error1Error2Error3的总数。

谢谢。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

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

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