首页 > 解决方案 > 我可以按(LINQ)分组并添加一个字段并连接另一个吗?

问题描述

我正在从 excel 表中读取数据,并且(经过一些处理)我将其放入一个类中:

public class Record
{
        public string partNo { get; set; }
        public float quantity { get; set; }
        public string designator { get; set; }
}

这是数据的样子:

record[0]=new Record { partNo = "123456789", quantity = 2, designator = "C1 C2 " };
record[1]=new Record { partNo = "333333333", quantity = 2, designator = "D1 D2 " };
record[2]=new Record { partNo = "123456789", quantity = 3, designator = "C10 C12 C15 " };
record[3]=new Record { partNo = "222222222", quantity = 5, designator = "Q5 Q6 Q10 Q22 Q50 " };

有没有办法对具有相同数据的 partNo 进行分组并添加数量并连接代号?像...

record[0]=new Record { partNo = "123456789", quantity = 5, designator = "C1 C2 C10 C12 C15 " };
record[1]=new Record { partNo = "333333333", quantity = 2, designator = "D1 D2 " };
record[3]=new Record { partNo = "222222222", quantity = 5, designator = "Q5 Q6 Q10 Q22 Q50 " };

我发现了一个类似的帖子,但不完全是:Group by in LINQ

我的 c# 技能是初学者,我的 Linq 经验是不存在的……哈哈。

任何帮助表示赞赏。谢谢

标签: c#linq

解决方案


您可以使用Enumerable.GroupBy将元素分组和投影到新表单:

IEnumerable<Record> groupedRecords = records.GroupBy(
  record => record.partNo, 
  (groupKey, records) => 
    new Record
    { 
      partNo = groupKey, 
      quantity = records.Sum(record => record.quantity), 
      designator = string.Concat(
        records.Select(record => record.designator)) 
    });

推荐阅读