c# - 我可以按(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 经验是不存在的……哈哈。
任何帮助表示赞赏。谢谢
解决方案
您可以使用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))
});
推荐阅读
- java - Java add .jar files automatically as a a Library
- node.js - socket.io disconnected when refresh page
- python - Validate data on rows/columns with subsets
- python - 按数字对列表中的列表进行排序
- elasticsearch - Elasticsearch 默认不创建 5 个分片
- authentication - What is the Authorized Javascript Origin for a webapp powered by Google Script?
- android - how to hide a recyclerview when another scrolls
- sql - 如何通过小计算从现有表创建新的 sql 表
- wordpress - How to secure custom Rest API that is used by a Wordpress plugin
- javascript - 循环javascript中的传播运算符