使用LINQ选择最频繁的值和计数,并分配给字典
本文关键字:分配 字典 选择 LINQ 使用 | 更新日期: 2023-09-27 18:29:33
我试图在表中选择前五个最频繁的值及其计数,并在Dictionary中返回它们。我能够获得sql:中的值
SELECT top 5
SR_Status,
COUNT(SR_Status) AS 'value_count'
FROM
ServiceRequests
GROUP BY
SR_Status
ORDER BY
'value_count' DESC;
如何转换为linq并分配给Dictionary
您没有指定使用的是Linq2Sql还是Linq2Objects,所以,让我们假设使用linq。尝试这样的操作(请参阅每行的注释):
var result = (from s in ServiceRequests // define the data source
group s by s.SR_Status into g // group all items by status
orderby g.Count() descending // order by count descending
select new { g.Key, Total = g.Count() }) // cast the output
.Take(5) // take just 5 items
.ToDictionary(x => x.Key, x => x.Total); // cast to dictionary
Obs:我没有测试它。
假设您使用的是Entity Framework,并且有一个名为ServiceRequests的EntitySet,并且所有属性名称都与列名相同:
var result = context.ServiceRequests.GroupBy(sr => sr.SR_Status)
.Select(g => new { Key = g.Key, Count = g.Count() })
.OrderByDescending(kv => kv.Count)
.Take(5)
.ToList();