c# - 使用 LINQ 将特定行从一个 DataTable 复制到另一个 DataTable
问题描述
下面是我试图将 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?
解决方案
使用Select
onPROD ID
表示您尝试将字符串集合存储在支持存储字符串值的列中。这将默认调用集合上的 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();
推荐阅读
- arrays - awk PROCINFO["sorted_in"] 多维数组排序问题
- regex - 匹配特定时间相关句子的正则表达式
- javascript - rethinkDB:获取对象中的第一个键名
- python - 如何以有效的方式从此类中获取数据?
- javascript - 带有可选路径参数的 react-router generatePath()
- c++ - 为什么这个 constexpr 函数会给我错误?
- scrapy - Scrapy根据字段将文件上传到S3中动态创建的目录
- flutter - LateInitializationError: 字段 'roast' 尚未初始化
- javascript - 使用 javascript 执行程序或 selenium 滚动弹出窗口?
- javascript - 使用 angular-highchart 的堆积条形图