使用linq组合两个列表,并为重复记录添加字段
本文关键字:记录 字段 添加 列表 组合 linq 两个 使用 | 更新日期: 2023-09-27 18:11:52
我有两个Report对象列表
public class Report
{
public string Status {get; set;}
public string ContractNumber {get; set;}
public int Count {get; set;}
}
我有两个对象列表List<Report> listP
和List<Report> listE
我需要组合这两个列表,并只保留不同的值,但对于重复的,我需要更新Count
字段,所以新的列表对象看起来像这样
new Report{
Status = Status;
ContractNumber = ContractNumber;
Count = listP.Report.Count + listE.Report.Count;
}
如果有重复的清单,请注意状态和合同号是相同的。
linq查询是什么样子的?
非常感谢您的帮助!
连接两个列表中的所有项目,然后按状态和合同号对项目进行分组。从每个组中创建新的报告对象,其中包含适当的状态和合同号,以及组中所有项目的计数总和:
var list = listP.Concat(listE)
.GroupBy(r => new { r.Status, r.ContractNumber })
.Select(g => new Report {
Status = g.Key.Status,
ContractNumber = g.Key.ContractNumber,
Count = g.Sum(r => r.Count)
});
或查询语法:
var list = from r in listP.Concat(listE)
group r by new { r.Status, r.ContractNumber } into g
select new Report {
Status = g.Key.Status,
ContractNumber = g.Key.ContractNumber,
Count = g.Sum(r => r.Count)
};