【问题标题】:Group by Multiple Columns And Aggregate Multiple Columns on DATATABLE C# [closed]按多列分组并聚合DATATABLE C#上的多列[关闭]
【发布时间】:2015-09-29 14:33:42
【问题描述】:

我想总结不同产品的数量。我是 Linq 的新手,我无法获得预期的数据。请帮忙。

我的数据表如下所示:

Proname | Qty1 | Qty2 | Qty3
----------------------------
A       | 2    | 0    | 4 
A       | 0    | 4    | 5
A       | 3    | 2    | 0
B       | 5    | 4    | 2
C       | 6    | 4    | 3
C       | 1    | 1    | 1



Expected Result :

Proname | Qty1 | Qty2 | Qty3
----------------------------
A       | 5    | 6    | 9 
B       | 5    | 5    | 5
C       | 7    | 5    | 4

【问题讨论】:

    标签: c# asp.net datatable


    【解决方案1】:

    这应该让你开始:

    var products = new DataTable();
    products.Columns.Add("ProductName", typeof(string));
    products.Columns.Add("Qty1", typeof(int));
    products.Columns.Add("Qty2", typeof(int));
    products.Columns.Add("Qty3", typeof(int));
    
    products.Rows.Add(new object[] {"A", 2, 0, 4});
    products.Rows.Add(new object[] {"A", 0, 4, 5});
    products.Rows.Add(new object[] {"A", 3, 2, 0});
    products.Rows.Add(new object[] {"B", 5, 4, 2});
    products.Rows.Add(new object[] {"C", 6, 4, 3});
    products.Rows.Add(new object[] {"C", 1, 1, 1});
    
    products.AsEnumerable()
            .GroupBy (p => p.Field<string>("ProductName"))
            .Select (p => new {
                Name = p.Key,
                Qty1 = p.Sum (a => a.Field<int>("Qty1")),
                Qty2 = p.Sum (a => a.Field<int>("Qty2")),
                Qty3 = p.Sum (a => a.Field<int>("Qty3"))
            });
    

    输出:

    参考:

    【讨论】:

    • HAi,为快速响应和更正我的帖子提供服务,如果我想基于多列执行分组并希望显示一组列,例如,proname,qty1 , qty2 , qty3 , proname 和 batch 上的批次和到期我想按和 qty1 , qty2 , qty3 进行分组,我正在使用聚合函数,但到期时它应该显示纯文本
    • 你应该把它作为一个单独的新问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 2015-11-18
    • 2020-08-23
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多