找出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,但似乎我不能用&&检查两个值
似乎你需要使用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的方法可以很好地用于演示目的在任何适当大小的集合