【问题标题】:Group by percentage in LINQ在 LINQ 中按百分比分组
【发布时间】:2015-11-06 13:20:48
【问题描述】:

我尝试在 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 相同的结果吗?

【问题讨论】:

    标签: c# sql asp.net-mvc linq


    【解决方案1】:

    大概是这样的:-

     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();
    

    【讨论】:

      【解决方案2】:

      你可以试试这个:

      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() 该表中的总行数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-08
        • 1970-01-01
        • 2021-01-09
        相关资源
        最近更新 更多