C# 使用LINQ选择最频繁的值和计数,并分配给字典
我试图在我的表中选择前五个最常见的值及其计数,并在字典中返回它们。我能够在sql中获取值:C# 使用LINQ选择最频繁的值和计数,并分配给字典,c#,linq,C#,Linq,我试图在我的表中选择前五个最常见的值及其计数,并在字典中返回它们。我能够在sql中获取值: SELECT top 5 SR_Status, COUNT(SR_Status) AS 'value_count' FROM ServiceRequests GROUP BY SR_Status ORDER BY 'value_count' DESC; 如何转换为linq并分配给字典您没有指定是使用Linq2Sql还是LINQ2对象,因此,让我们假
SELECT top 5
SR_Status,
COUNT(SR_Status) AS 'value_count'
FROM
ServiceRequests
GROUP BY
SR_Status
ORDER BY
'value_count' DESC;
如何转换为linq并分配给字典您没有指定是使用Linq2Sql还是LINQ2对象,因此,让我们假设使用linq。尝试以下方法(请参见每行的注释):
Obs:我没有测试它。假设您使用的是实体框架,并且有一个名为ServiceRequests的实体集,并且所有属性名称与列名相同:
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();
列表不是字典
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();