如何对集合中所有对象的属性执行.Max()并返回具有最大值的对象

激流星

我有一个具有两个int属性的对象列表。该列表是另一个linq查询的输出。物体:

public class DimensionPair  
{
    public int Height { get; set; }
    public int Width { get; set; }
}

我想在具有最大Height属性值的列表中查找并返回该对象

我可以设法获得价值的最高价值,Height而不是对象本身。

我可以用Linq这样做吗?怎么样?

乔恩·斯基特

我们有一个扩展方法可以在MoreLINQ中做到这一点您可以在此处查看实现,但是基本上是在数据中进行迭代的情况,记住我们到目前为止所看到的最大元素以及在投影下产生的最大值。

在您的情况下,您可以执行以下操作:

var item = items.MaxBy(x => x.Height);

与Mehrdad的第二个解决方案(与基本上相同)相比,此方法(IMO)比此处介绍的任何解决方案都要好MaxBy

  • 它是O(n),不同于先前接受的答案,后者在每次迭代中都找到最大值(使其成为O(n ^ 2))
  • 排序解为O(n log n)
  • Max的值,然后找出与该值的第一个元素是O(n),但在序列迭代两次。在可能的情况下,应以单遍方式使用LINQ。
  • 与汇总版本相比,它的阅读和理解要简单得多,并且每个元素仅评估一次投影

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获得具有对使用流多个属性最大值的对象?

如何编译使用流的给定属性的最大值的所有对象的列表?

如何强制max返回Java Stream中的所有最大值?

如何找到列表中所有最大值的位置?

获取具有最大值的对象列表

需要更新对象数组中所有对象的属性值

LINQ查询以检索所有具有最大值的对象

如何获得具有相同属性并在数组中具有最大值的对象-Javascript

如何获取数组中所有最大值的索引

C#使用LINQ过滤对象列表中具有最大值的每个对象

返回所有行具有最大值的列索引(反向一键编码)

查找具有最大值的对象属性,其中属性为小数

如何获得向量中所有分量的最大值?

如何从具有多个值的groupby对象中获取最大值?

在javascript对象中返回最大值

返回所有组的最大值?

使用LINQ从列表中获取具有特定属性最大值的对象

返回具有一列最大值的行

在具有多个条件的向量中返回最大值

查找具有最大值的父对象

如何提取具有最大值的django对象?

如何只保留ArrayList中具有最大值的对象?

具有最小最大值的属性

具有索引/匹配公式的 Max 函数不返回最大值

如何返回字典中具有最大值的键

返回整行,在numpy中具有最大值-python

遍历对象数组以返回具有最大值和的键

如何在MongoDB集合的嵌套对象中获取具有最大值的键?

在 INNER JOIN 上返回具有最大值的行