【问题标题】:group by and sum using linq [duplicate]使用linq进行分组和求和[重复]
【发布时间】:2017-01-25 08:01:23
【问题描述】:
Id | Value

1    50
2    60
3    80
3    50
2    20
1    60
1   100

我想使用 linq 查询计算每个 id 的总数。我知道我必须在 sql 中使用 group by 语句:

select id, sum(Value)
from MyTable
group by id

但是我怎样才能使用 linq 或 lambda 来实现呢?

【问题讨论】:

  • @nozzleman 我看到了这个问题,但我真的想要一个简单而具体的例子
  • 你没有问这么简单具体的问题(例如:c#代码:List、DataSet、其他格式?等)所以很难正确回答。
  • 那么,我的“小”表有 2 列,对你​​来说这不是一个具体的例子吗?不错
  • 没必要生气。我只是想指出,如果您的数据已经在某个Listclass 中,那么您需要的代码看起来会有所不同。那不明显。我们只知道数据库中有数据。有很多方法可以解决这个问题。一切都取决于其他情况。如果您希望人们付出努力来回答,您应该提供他们需要的所有信息以提供令人满意的答案。我真的不是有意冒犯,我只是标记了另一个答案,以一种可以理解的方式解决了确切的问题。
  • 如果您觉得重复的问题回答了您的问题,您当然可以删除或投票关闭您自己的问题 - 我怀疑,至少如果您不熟悉 Linq。

标签: c# asp.net linq


【解决方案1】:
var list;
// manipulate list from your table;

list
  .GroupBy(t=>t.Id)
  .Select(t=>new { ID= t.Key , Value= t.Sum(u=>u.Value)}).ToList

【讨论】:

    【解决方案2】:

    没有测试,但应该可以工作:

    from entry in MyTable
    group entry by entry.Id into g
    select new { Id = g.Key, Sum = g.Sum(e => e.Value) };
    

    或者,如果您更喜欢方法链接语法:

    MyTable.GroupBy(entry => entry.Id).Select(g => new { Id = g.Key, Sum = g.Sum(e => e.Value) });
    

    【讨论】:

    • "group by" 或 group entry by ?
    • @FlorinM。是的,正确的语法是group entry by entry.Id into g
    【解决方案3】:

    你可以试试这个

    var results = from p in tables
                  group by p.Id into g
                  select new { Id = g.Key, Value = g.Sum(item=>item.Value) };
    

    【讨论】:

      猜你喜欢
      • 2016-04-02
      • 2020-01-24
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2016-08-08
      • 2013-03-14
      • 2012-04-22
      • 2012-11-25
      相关资源
      最近更新 更多