删除List的重复项,通过C#中的属性值进行选择?

Gar*_*yer 3 c# linq list duplicates

我有一个对象列表,我需要从中删除一些重复项.如果它们具有相同的Id并且更喜欢booleanValue为false的那个,我们认为它们是重复的.这是我到目前为止所拥有的:

objects.GroupBy(x => x.Id).Select(x => x.Where(y => !y.booleanValue));
Run Code Online (Sandbox Code Playgroud)

我已经确定GroupBy没有进行这样的分组,所以我不知道其他任何功能是否正常工作.有什么想法吗?提前致谢.

p.s*_*w.g 7

你可以这样做:

var results = 
    from x in objects
    group x by x.Id into g
    select g.OrderBy(y => y.booleanValue).First();
Run Code Online (Sandbox Code Playgroud)

对于Id它找到的每一个objects,它将选择第一个元素booleanValue == false,或第一个元素(如果它们都没有booleanValue == false).

如果您更喜欢流利的语法:

var results = objects.GroupBy(x => x.Id)
                     .Select(g => g.OrderBy(y => y.booleanValue).First());
Run Code Online (Sandbox Code Playgroud)