C# 使用LINQ在列表列表上聚合
以下是我的代码的简化版本:C# 使用LINQ在列表列表上聚合,c#,linq,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; 公共枚举错误 { 错误1, 错误2, 错误3, } 公共类数据单元 { p
public enum Error
{
Error1,
Error2,
Error3,
}
public class DataUnit
{
public int Data; // Any Data
public List<Error> Errors { get; private set; }
}
List<DataUnit> DataList;
公共枚举错误
{
错误1,
错误2,
错误3,
}
公共类数据单元
{
public int Data;//任何数据
公共列表错误{get;private set;}
}
列表数据列表;
我想使用LINQ展平数据列表
,并获得Error1
、Error2
和Error3
的总计数
谢谢。您可以使用Linq的selectMany()语句:
dataList
.SelectMany(x => x.Errors)
.GroupBy(x => x)
.Select(g => new { Value = g.Key, Count = g.Count() })
DataList.SelectMany(list => list.Errors).Where(error => error == Error.Error1).Count()
您可以使用Linq的selectMany()语句:
DataList.SelectMany(list => list.Errors).Where(error => error == Error.Error1).Count()
非常感谢。我还计算了查询等价项,并将其添加到此处以确保完整性:
从数据列表中的x开始从x.Errors中的y开始将y分组到g中
选择新的{Value=g.Key,Count=g.Count()代码>谢谢。我还计算了查询等价项,并将其添加到此处以确保完整性:从数据列表中的x开始从x.Errors中的y开始将y分组到g中
选择新的{Value=g.Key,Count=g.Count()代码>