Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ选择最频繁的值和计数,并分配给字典_C#_Linq - Fatal编程技术网

C# 使用LINQ选择最频繁的值和计数,并分配给字典

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对象,因此,让我们假

我试图在我的表中选择前五个最常见的值及其计数,并在字典中返回它们。我能够在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对象,因此,让我们假设使用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();