c# - 删除列表的重复项,按 C# 中的属性值选择?

标签 c# linq list duplicates

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

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();

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

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

var results = objects.GroupBy(x => x.Id)
                     .Select(g => g.OrderBy(y => y.booleanValue).First());

关于c# - 删除列表的重复项,按 C# 中的属性值选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15939044/

相关文章:

c# - 使用最小起订量和 nunit 测试 web api Controller 时如何模拟用户身份?

C# LINQ 比较列表值

c# - 为 SingleOrDefault Linq 方法定义默认值

c# - LINQ让重复数据

python - 如何在保持区分大小写的同时消除 Python 中的重复列表条目?

c# - SQLite Insert Into 命令导致崩溃。 (C#)

c# - 在隐藏按钮上触发 Button.PerformClick()

c# - 如果有方法/扩展方法,则调用它

python - 如何将 awk 生成的列加载到 python 列表中

java - 为什么即使提供了初始容量,我们也不能在将元素添加到第 (n-1) 个索引之前将元素添加到列表中的第 n 个索引