【发布时间】:2015-05-08 11:49:49
【问题描述】:
我有两个动态列表,每个列表项都包含三个属性:“Id”(整数)、“LikesRed”(布尔)和“LikesBlue”(布尔)。
我想合并两个列表,将每个项目按其“Id”分组,但我还想用任何“真”值覆盖任何“假”值。
例如,这是我的两个列表的数据:
List1
{ Id = 1, LikesRed = True, LikesBlue = False }
{ Id = 2, LikesRed = True, LikesBlue = False }
{ Id = 4, LikesRed = False, LikesBlue = True }
List2
{ Id = 1, LikesRed = False, LikesBlue = True }
{ Id = 3, LikesRed = False, LikesBlue = True }
{ Id = 4, LikesRed = True, LikesBlue = False }
这是我的预期结果:
{ Id = 1, LikesRed = True, LikesBlue = True }
{ Id = 2, LikesRed = True, LikesBlue = False }
{ Id = 3, LikesRed = False, LikesBlue = True }
{ Id = 4, LikesRed = True, LikesBlue = True }
我已设法使用以下方法合并两个列表(但项目未分组):
var results = list1.Concat(list2);
我还尝试使用 LINQ 对该列表中的项目进行分组(它有效,但我不确定我可以/应该用它做什么):
var final = from x in results
group x by x.Id into g
select g;
任何人都可以就我如何实现目标提供任何建议吗?
【问题讨论】: