在LINQ中按百分比分组

Cit*_* SP 2 c# sql linq asp.net-mvc

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

SELECT State, (Count(a.State)* 100 / (Select Count(*) From myTable))
FROM myTable a
GROUP BY a.State
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的:

var data = db.myTable.GroupBy(fu => fu.State)
        .Select(g => new { Label = g.Key, Value = g.Key * 100 / g.Count() })
        .ToList();
Run Code Online (Sandbox Code Playgroud)

计算不正确.必须让LINQ产生与SQL相同的结果?

Rah*_*ngh 5

可能这个: -

 Value = g.Count() * 100 / db.myTable.Count()
Run Code Online (Sandbox Code Playgroud)

这似乎等同于您的SQL查询.

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

var data = db.myTable.GroupBy(fu => fu.State)
         .Select(g => new { Label = g.Key, Value = g.Count() * 100 / db.myTable.Count() })
         .ToList();
Run Code Online (Sandbox Code Playgroud)