我有一节课:
class Point
{
double X, Y;
}
Run Code Online (Sandbox Code Playgroud)
从List<Point>,说我想要的Point地方Point.X + Point.Y是在列表中最高.我如何在LINQ中执行此操作?
这将是一种方式(尽管不是最佳方式):
List<Point> list = ...;
Point maxPoint = list.OrderByDescending(p => p.X + p.Y).First();
Run Code Online (Sandbox Code Playgroud)
应该执行得更好的另一种方法是修改你的Point类来实现IComparable<T>,如下所示:
class Point : IComparable<Point>
{
double X, Y;
public int CompareTo(Point other)
{
return (X + Y).CompareTo(other.X + other.Y);
}
}
Run Code Online (Sandbox Code Playgroud)
...然后你可以简单地做到:
List<Point> list = ...;
Point maxPoint = list.Max();
Run Code Online (Sandbox Code Playgroud)