简体   繁体   English

Linq查询摘要按列排序

[英]Linq query summary by column with ordering

The scenario is like this 场景是这样的

public class Test {
   public string name;
   public int val1;
    public int val1;
}

name |val 1 |val 2|
'aa' | 10   | 4   | 
'aa' | 30   | 5   | 
'bb' | 14   | 4   |
'bb' | 16   | 6   | 
'cc' | 5    | 5   |
'cc' | 2    | 1   |
'cc' | 1    | 1   |

What is the best way group by name and get summary val_1 ans val_2 for every name 什么是按名称分组的最佳方式,并为每个名称获取汇总val_1和val_2

as

name |val 1 |val 2|
'aa' | 40   | 9   | 
'bb' | 30   | 10  | 
'cc' | 8    |  7  |

Try this 试试这个

var results =
    from t in db.Tests
    group t by t.name into g
    orderby g.Key
    select new
    {
        name = g.Key,
        val_1 = g.Sum(x => x.val_1),
        val_2 = g.Sum(x => x.val_2)
    };

Or if you prefer fluent syntax: 或者如果您更喜欢流利的语法:

var results = db.Tests.GroupBy(t => t.name)
                      .OrderBy(g => g.Key)
                      .Select(g => new
                              {
                                  name = g.Key,
                                  val_1 = g.Sum(x => x.val_1),
                                  val_2 = g.Sum(x => x.val_2)
                              });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM