我有一个对象列表,我需要从中删除一些重复项。如果它们具有相同的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());

10-04 17:43