我有Lambda Expression返回正确过滤的数据,但我需要对返回的记录进行一些计算。
我有两个具有多对多关系的实体(用户和语言),我需要对返回者语言进行分组计数,以便找出每个返回语言的人数。
Lambda Expression返回的示例数据集:
期望的结果:
我尝试使用GroupBy()和select(),但只得到了结果的正确结果,但是想用Lambda做到这一点。
[编辑] 解决方案的关键是使用SelectMany()结合GroupBy()将结果展平。非常感谢@Christos正确答案。
答案 0 :(得分:2)
您可以尝试这样的事情:
var results = data.SelectMany(user=>user.Languages)
.GroupBy(language=>language)
.Select(gr=>new { Language = gr.Key, Total = gr.Count()});
我假设每个用户对象都有一系列字符串IEnumerable<string>
,它们被称为语言并保存用户的语言。此外,您拥有的数据是所有用户的序列。