C# 使用相同的键/属性合并列表中的项
这应该不是很难做到,但我正在努力找到正确的方法来做到这一点 我有两个具有相同属性的列表。我想做的是将这两个列表合并在一起,并合并/合并列表中具有相同键/属性的各个项目 这是我的C# 使用相同的键/属性合并列表中的项,c#,linq,list,merge,C#,Linq,List,Merge,这应该不是很难做到,但我正在努力找到正确的方法来做到这一点 我有两个具有相同属性的列表。我想做的是将这两个列表合并在一起,并合并/合并列表中具有相同键/属性的各个项目 这是我的视图模型: public class GradeViewModel { public int GradeId { get; set; } public string Name { get; set; } public int Total { get; set; } } 在这里,我正在填充我的列表:
视图模型
:
public class GradeViewModel {
public int GradeId { get; set; }
public string Name { get; set; }
public int Total { get; set; }
}
在这里,我正在填充我的列表:
var buyPostGrades = Mapper.Map<IEnumerable<BuyPostGrade>, IEnumerable<GradeViewModel>>(_reportService.GetBuyPostGrades());
var sellPostGrades = Mapper.Map<IEnumerable<SellPostGrade>, IEnumerable<GradeViewModel>>(_reportService.GetSellPostGrades());
然后我在我的sellPostGrades
列表中有一项如下所示:
GradeId = 6,
Name = "TestGrade",
Total = 4
GradeId = 6,
Name = "TestGrade",
Total = 10
然后我想将这两个项目合并为一个,如下所示:
GradeId = 6,
Name = "TestGrade",
Total = 14
我确信在一些
Linq
中我可以用它来做这件事,但我还是新手,不确定哪种方法最好。假设相同的等级ID意味着相同的名称,您可以按如下方式合并两个列表:
var res buyPostGrades
.Concat(sellPostGrades)
.GroupBy(x => new {x.GradeId, x.Name})
.Select(g => new GradeViewModel {
GradeId = g.Key.GradeId
, Name = g.Key.Name
, Total = g.Sum(x => x.Total)
}).ToList();
这正是我需要的。非常感谢。