【发布时间】:2011-08-05 15:22:34
【问题描述】:
我有多个包含对象的列表。但是一个列表中的某些项目也存在于其他列表中。 我的问题是如何将所有列表中的所有项目合并到一个最终列表中。因此,该列表中没有重复项,并且项目根据每个项目在不同列表中的重复次数进行排序。
例子
列表1:[用户1,用户2,用户3,用户4]
列表 2:[用户 2,用户 4,用户 5]
列表 3:[user4,user6]
结果:[user4, user2, user1, user3, user5, user6]
(相同数量的用户顺序无所谓)
我尝试过这样的事情:
List<User> finalResults = list1.Concat(list2).ToList<User>();
var q = finalResults.GroupBy(x => x.id)
.Select(g => new User { name = g.First().name, count = g.Count() })
.OrderByDescending(usr => usr.count);
finalResults = q.ToList<User>();
但结果是一个空列表。
提前致谢!
【问题讨论】:
-
您能否制作一个简短但完整的程序来显示问题。尝试重现问题会给我你想要的确切列表,所以我敢打赌这是我们没有看到的代码中的东西。
-
您拥有的代码有效。您的问题出在其他地方。
-
我的输入列表不为空。在我先尝试 sortedDictionary 之后,我会添加更多代码。
标签: c# linq list sorting group-by