我有两个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查询的外观如何?
非常感谢您的帮助!
答案 0 :(得分:1)
连接两个列表中的所有项目,然后按状态和合同编号对项目进行分组。从每个组中创建具有适当状态和合同号的新报告对象,以及组中所有项目的计数总和:
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)
};