我有以下DataTable
RequestId userID ProductCode ProductValue
1 "10004" 70 85.50
2 "10004" 67 944.00
3 "10333" 30 97.00
4 "23344" 70 89.00
Run Code Online (Sandbox Code Playgroud)
我想实现如下-串接ProductCode,并ProductValue进入一个逗号分隔的字符串转换成一个新的列和任何重复的行会被添加到这个逗号分隔的字符串.然后删除重复行(按请求ID排序)
RequestId userID ProductCode ProductValue NewColumn
1 "10004" 70 85.50 "70,85.50,67,944.00"
3 "10333" 30 97.00 "30,97.00"
4 "23344" 70 89.00 "70,89.00"
Run Code Online (Sandbox Code Playgroud)
这可能是使用Linq - 或者我必须循环遍历表并在我去的时候询问字段?
var newTable = oldTable.Clone();
newTable.Columns.Add("NewColumn");
newTable = oldTable.AsEnumerable()
.GroupBy(row => row.Field<string>("userID"))
.Select(g => {
var newRow = newTable.NewRow();
var firstRow = g.First();
for(int i = 0; i < 4; i++) newRow[i] = firstRow[i];
newRow["NewColumn"] = string.Join(", ",
g.Select(row=>row.Field<string>("ProductCode")
+ ", " + row.Field<decimal>("ProductValue")));
return newRow;
}).CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)
注意:我认为ProductCode是字符串,并且双引号userId和NewColumn值不是实际值的一部分.
| 归档时间: |
|
| 查看次数: |
2104 次 |
| 最近记录: |