返回满足特定条件的列表元素

Joh*_*Tan 5 c# linq

我有一节课:

class Point
{
    double X, Y;
}
Run Code Online (Sandbox Code Playgroud)

List<Point>,说我想要的Point地方Point.X + Point.Y是在列表中最高.我如何在LINQ中执行此操作?

sst*_*tan 6

这将是一种方式(尽管不是最佳方式):

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)