C# 按LINQ中的百分比分组

C# 按LINQ中的百分比分组,c#,sql,asp.net-mvc,linq,C#,Sql,Asp.net Mvc,Linq,我尝试在LINQ中创建以下SQL查询,以便在我的ASP MVC项目中使用: SELECT State, (Count(a.State)* 100 / (Select Count(*) From myTable)) FROM myTable a GROUP BY a.State 到目前为止,我所拥有的: var data = db.myTable.GroupBy(fu => fu.State) .Select(g => new { Label = g.Key, Val

我尝试在LINQ中创建以下SQL查询,以便在我的ASP MVC项目中使用:

SELECT State, (Count(a.State)* 100 / (Select Count(*) From myTable))
FROM myTable a
GROUP BY a.State
到目前为止,我所拥有的:

var data = db.myTable.GroupBy(fu => fu.State)
        .Select(g => new { Label = g.Key, Value = g.Key * 100 / g.Count() })
        .ToList();
计算不正确。必须让LINQ产生与SQL相同的结果吗?

可能是这样的:-

 Value = g.Count() * 100 / db.myTable.Count()
这似乎相当于您的SQL查询

因此,您的完整查询应该如下所示:-

var data = db.myTable.GroupBy(fu => fu.State)
         .Select(g => new { Label = g.Key, Value = g.Count() * 100 / db.myTable.Count() })
         .ToList();
您可以尝试以下方法:

var data = db.myTable.GroupBy(fu => fu.State)
        .Select(g => new { Label = g.Key, Value = g.Count() * 100 / db.myTable.Count() })
        .ToList();
g.Count()
将为您提供
Count(a.State)
值和
db.myTable.Count()
该表中的行总数