找出LINQ中最大的行

本文关键字:LINQ 找出 | 更新日期: 2023-09-27 18:11:21

ID   Value
20   200
20   300
10   100
10   050

我需要获得最大值的最大ID,然后存储目标ID及其值。在上面的例子中,输出应该是(ID=20,Value=300)。我知道我可以用Max,但似乎我不能用&&检查两个值

找出LINQ中最大的行

似乎你需要使用OrderBy:

var biggestByIdAndValue = values.OrderByDescending(x => x.Id)
                                .ThenByDescending(x => x.Value)
                                .FirstOrDefault();

根据您使用的集合类型和集合的大小,使用这样的方法可能会更好:

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
    public static void Main()
    {
        var fooList = new List<Foo>
        {
            new Foo { Id = 20, Value = 200 },
            new Foo { Id = 20, Value = 300 },
            new Foo { Id = 10, Value = 100 },
            new Foo { Id = 10, Value = 050 }
        };
        var maxId = fooList.Max(f => f.Id);
        var maxValue = fooList.Where(f => f.Id == maxId).Max(f => f.Value);
        Console.WriteLine("Max Id = {0}", maxId);
        Console.WriteLine("Max value = {0}", maxValue);
    }
    public class Foo
    {
        public int Id { get; set; }
        public int Value { get; set; }
    }
}

但是@2kay的方法可以很好地用于演示目的在任何适当大小的集合