繁体   English   中英

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

[英]Copy specific rows from One DataTable to another DataTable using LINQ

下面是我尝试将3列“ BATCH NUM”,“ QTY”和“ PROD ID”从一列复制到另一列的代码。 问题是复制了“ BATCH NUM”,“ QTY”,但没有复制“ PROD 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();

如何将“ PROD ID”复制到DataTable?

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();

在此处输入图片说明

暂无
暂无

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

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