C# 使用LINQ将特定行从一个数据表复制到另一个数据表

C# 使用LINQ将特定行从一个数据表复制到另一个数据表,c#,.net,linq,datatable,C#,.net,Linq,Datatable,下面是我的代码,我正在尝试将3列“BATCH NUM”、“QTY”和“PROD ID”从一列复制到另一列。问题是复制了“批次号”、“数量”,但未复制“产品ID”列 var newDt = dt.AsEnumerable() .GroupBy(r => r.Field<string>("BATCH NUM")) .Select(g => { var row

下面是我的代码,我正在尝试将3列“BATCH NUM”、“QTY”和“PROD ID”从一列复制到另一列。问题是复制了“批次号”、“数量”,但未复制“产品ID”列

var newDt = dt.AsEnumerable()
              .GroupBy(r => r.Field<string>("BATCH NUM"))
              .Select(g =>
              {
                  var row = dt.NewRow();

                  row["BATCH NUM"] = g.Key;
                  row["QTY"] = g.Sum(r => Convert.ToInt32(r.Field<string>("QTY")) + Convert.ToInt32(r.Field<string>("BONUS")));
                  row["PROD ID"] = g.Select(r => r.Field<string>("PROD ID"));
                  return row;
              }).CopyToDataTable();
var newDt=dt.AsEnumerable()
.GroupBy(r=>r.Field(“批次号”))
.选择(g=>
{
var row=dt.NewRow();
行[“批次编号”]=g.键;
行[“数量”]=g.Sum(r=>Convert.ToInt32(r.Field(“数量”))+Convert.ToInt32(r.Field(“奖金”);
行[“产品ID”]=g.Select(r=>r.Field(“产品ID”);
返回行;
}).CopyToDataTable();

如何将“PROD ID”复制到数据表?

使用
PROD ID
上的
Select
表示您正在尝试将字符串集合存储在支持存储字符串值的列中。默认情况下,这将调用集合上的ToString方法并生成System.Linq。。。列中的字符串值

要使用适当的函数获取列中的所有值:

var newDt = dt.AsEnumerable()
              .GroupBy(r => r.Field<string>("BATCH NUM"))
              .Select(g =>
              {
                  var row = dt.NewRow();

                  row["BATCH NUM"] = g.Key;
                  row["QTY"] = g.Sum(r => Convert.ToInt32(r.Field<string>("QTY")) + Convert.ToInt32(r.Field<string>("BONUS")));
                  row["PROD ID"] = String.Join(",", g.Select(x => x.Field<string>("PROD ID")).Distinct());
                  return row;
              }).CopyToDataTable();
var newDt=dt.AsEnumerable()
.GroupBy(r=>r.Field(“批次号”))
.选择(g=>
{
var row=dt.NewRow();
行[“批次编号”]=g.键;
行[“数量”]=g.Sum(r=>Convert.ToInt32(r.Field(“数量”))+Convert.ToInt32(r.Field(“奖金”);
行[“PROD ID”]=String.Join(“,”,g.Select(x=>x.Field(“PROD ID”)).Distinct();
返回行;
}).CopyToDataTable();

我正在根据“BATCH NUM”对行进行分组,因此我只想获取PROD ID的那些值。@JahanzaibNiazi在字符串列中,您只能放入字符串值,而不能放入字符串集合。您可以使用string.join来获取所有产品ID。查看我更新的代码。我只想获取按批次编号分组的产品Id值。那么我应该使用哪种功能?我已经尝试了您的代码,但它没有将产品Id列复制到datatable是的,我尝试了您编辑的代码,但它没有将产品Id列复制到datatable