[英]Merging Datatable rows' value into 1 row using LINQ
我有一个具有以下结构的 C# 数据表:
ProductID PartNo Grade1 Grade2 Grade3
Product1 P1 A N/A Z
Product1 P2 B E Y
Product1 P3 C F X
Product2 P1 D N/A V
Product2 P3 N/A G W
我想通过根据 P1、P2、P3(固定列表)的顺序对产品 ID 和零件编号进行分组,将数据行的值合并到 1 行。最终格式为 P1_P2_P3 所以最终结果将是:
ProductID PartNo Grade1 Grade2 Grade3
Product1 P1_P2_P3 A_B_C N/A_E_F Z_Y_X
Product2 P1_P2_P3 D_N/A_N/A N/A_N/A_G V_N/A_W
而不是在 foreach 循环中,有没有更好的方法来通过 C# LINQ 实现最终输出?
我认为您可以 group_by PID 然后选择新对象,如下所示:
data.
GroupBy(p => p.Id).
Select(group => return new {
Id: group.Key,
Part_No: group.Value.Sum(group_row.Part_No),
Grade1: group.Value.Sum(group_row.Grade1),
etc...
});
我是从头顶上写的,所以不要复制意大利面,但这种方法可能会奏效......
请尝试以下 LINQ 表达式,
Prodcuts.GroupBy(product=>product.ProductId).Select(productGroup=>{
return new { ProductId = productGroup.Key, PartNo = string.Join("_", productGroup.Select(p => p.PartNo)), Grade1 = string.Join("_", productGroup.Select(p => p.Grade1)), Grade2 = string.Join("_", productGroup.Select(p => p.Grade2)), Grade3 = string.Join("_", productGroup.Select(p => p.Grade3)) };
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.