【问题标题】:C# How do i merge two DataTable Row into one rowC#如何将两个DataTable Row合并为一行
【发布时间】:2021-01-10 01:10:00
【问题描述】:

我有一个如下所示的数据表,它是从数据库中填充的

我怎样才能使结果如下所示

抱歉我的解释不好,非常感谢

【问题讨论】:

  • 做一个 GROUP BY..
  • 问题是,这个数据表我已经手动从另一个数据表中插入行,有没有用C#来di呢?
  • @KuHan 我为C#添加了answer,看看吧。

标签: c# sql linq datatable


【解决方案1】:

你需要这样写:

Select
PN,
[Description],
Sum(January) AS January,
Sum(February) AS February,
Sum(March) AS March,
Sum(April) AS April
FROM [YourTable]
GROUP BY
PN,
[Description]

【讨论】:

  • 问题是,这个数据表我已经从另一个数据表手动插入行,有没有用C#来di呢?
【解决方案2】:

如果您想使用 Datatable 而不是 SQL,您可以使用:

dt = dt.AsEnumerable()
       .GroupBy(r => new {PN = r["PN"], Description = r["Description"]})
       .Select(g => 
       {  
            var row = dt.NewRow();

            row["PN"] =  g.Key.PN;
            row["Description"] = g.Key.Description;
            row["January"] =  g.Sum(r => r.Field<int>("January"));
            row["February"] =  g.Sum(r => r.Field<int>("February"));
            row["March"] =  g.Sum(r => r.Field<int>("March"));
            row["April"] =  g.Sum(r => r.Field<int>("April"));
            
            return row;
       
       })
       .CopyToDataTable();

见:How do I use SELECT GROUP BY in DataTable.Select(Expression)?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    相关资源
    最近更新 更多