我有一个对象列表,我需要从中删除一些重复项。如果它们具有相同的ID,则我们认为它们是重复的,并且更喜欢其booleanValue为false的ID。这是我到目前为止的内容:
objects.GroupBy(x => x.Id).Select(x => x.Where(y => !y.booleanValue));
我确定GroupBy没有进行此类分组,因此我看不到其他任何功能是否正常工作。有什么想法吗?提前致谢。
最佳答案
你可以这样做:
var results =
from x in objects
group x by x.Id into g
select g.OrderBy(y => y.booleanValue).First();
对于在
Id
中找到的每个objects
,它将选择booleanValue == false
的第一个元素,或第一个元素(如果它们都没有booleanValue == false
)。如果您喜欢流利的语法:
var results = objects.GroupBy(x => x.Id)
.Select(g => g.OrderBy(y => y.booleanValue).First());