c# - Linq 查询以检索具有最大值的所有对象

标签 c# linq

目前我有一个对象的列表,我需要在其中找到所有 具有最大值的事件。

目前我的解决方案是:

Foo maxFoo = list.OrderByDescending(foo => foo.A).First();
List<Foo> maxFoos = new List<Foo>();

foreach(Foo foo in list) {
    if (foo.A.Equals(maxFoo.A)) {
        maxFoos.Add(foo);
    }
}

但是我想知道是否有办法在单个 Linq 表达式中执行此操作。

我看过的所有资源都只是指获取一个对象的最大值。

注意:目前,我想知道一个不依赖于MoreLinq的解决方案。

最佳答案

可以按属性分组,然后按键排序,取第一个的内容,像这样:

var res = list
    .GroupBy(item => item.A)
    .OrderByDescending(g => g.Key)
    .First()
    .ToList();

关于c# - Linq 查询以检索具有最大值的所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33248889/

相关文章:

c# - Linq 用 OR 动态追加 Where 子句

C# linq groupby 包括 json

c# - 如果重写时未调用 base.OnCreateView(.....) 会怎样?

C#类库如何添加启动代码

c# - c#razor 字符串与带有尾部斜杠的 html 字符串的连接

c# - 如何在 C# 中使用 LINQ 比较两个 List<String>

c# - Entity Framework 生成的类型不继承自 EntityObject

c# - 为什么 Process.WaitForExit 不等待?

python - 你能用 Python 或 Boo 之类的语言进行类似 LINQ 的查询吗?

c# - 使用 LINQ,如何将分层 XML 加载到 POCO 中?