C#如何将两个DataTable Row合并为一行

Posted

技术标签:

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

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

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

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

【问题讨论】:

做一个 GROUP BY.. 问题是,这个数据表我已经手动从另一个数据表中插入行,有没有用C#来di呢? @KuHan 我为C#添加了answer,看看吧。 【参考方案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)?

【讨论】:

以上是关于C#如何将两个DataTable Row合并为一行的主要内容,如果未能解决你的问题,请参考以下文章

c#实现两个(DataTable)数据合并

c# 两个datatable合并

C#如何在已经有数据的datatable里添加一个新列,并且将一个数组里的数据放入新列

C# 两个datatable合并取并集减交集请问该段代码怎么写?

C# datatable 去掉为空列的行

c#中同一个Datatable中的如何把重复的记录合并起来,