gpt4 book ai didi

c# - 使用附加条件进行不同的 Linq 过滤

转载 作者:太空狗 更新时间:2023-10-30 01:09:31 25 4
gpt4 key购买 nike

我有一个列表,其中包含重复的项目值(按 ID),但具有不同(或可能相同)的优先级。应从列表中删除具有相同或较低优先级的重复项。

例如:

var items = new {
new { Id=2, Priority=3 },
new { Id=4, Priority=4 },
new { Id=1, Priority=4 },
new { Id=2, Priority=5 },
new { Id=4, Priority=4 }
};

RemoveDuplicates(items);

// items should now contain distinct values,
// with highest possible priority
var items = new {
new { Id=1, Priority=4 }, // this one was unique
new { Id=2, Priority=5 }, // this one was duplicate with higher priority
new { Id=4, Priority=4 }, // this one was duplicate with same priority
};

是否可以使用 LINQ 执行此操作?我知道我可以按 ID 对列表进行排序,然后检查相邻的项目,但我只想检查这是否可行。

(更新:输入值不一定按 ID 分组)

最佳答案

        var items = new[] {
new { Id=2, Priority=3 },
new { Id=2, Priority=5 },
new { Id=1, Priority=4 },
new { Id=4, Priority=4 },
new { Id=4, Priority=4 }
};

var deduped = items
.GroupBy(item => item.Id)
.Select(group => group.OrderByDescending(item => item.Priority).First())
.OrderBy(item => item.Id);

关于c# - 使用附加条件进行不同的 Linq 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6531869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com