📜  LINQ |如何找到给定序列的最大值?(1)

📅  最后修改于: 2023-12-03 15:32:39.479000             🧑  作者: Mango

LINQ |如何找到给定序列的最大值?

当我们需要找到给定序列中的最大值时,可以使用 LINQ 的 Max 方法。这个方法接收一个序列,并返回序列中的最大值。

方法语法
public static TSource Max<TSource>(this IEnumerable<TSource> source);
public static TResult Max<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector);
示例

我们来看一个示例,假设我们有一个包含整数的序列:

var numbers = new List<int> { 1, 5, 3, 8, 2 };

我们可以使用 Max 方法获取最大值:

int max = numbers.Max();

上面的代码将返回 8。如果要获取其他类型的序列中的最大值,只需要使用对应的类型即可。比如获取一个包含字符串的序列中的最大值:

var names = new List<string> { "John", "Maggie", "Alex", "Tina" };
string maxName = names.Max();

这个例子中,最大的字符串是 "Tina"。

如果需要找到一个对象序列中的最大值,可以使用 Max 方法的另一个重载,它接收一个 lambda 表达式,用于选择要比较的属性。如下所示:

var people = new List<Person> {
    new Person { Name = "John", Age = 25 },
    new Person { Name = "Maggie", Age = 30 },
    new Person { Name = "Alex", Age = 27 },
    new Person { Name = "Tina", Age = 21 }
};

Person oldestPerson = people.Max(p => p.Age);

这个代码将返回年龄最大的 Person 对象。

总结

在 LINQ 中,可以使用 Max 方法来找到给定序列的最大值。Max 方法有两个重载,可以用于不同类型的序列。如果需要找到一个对象序列中的最大值,则可以使用 Max 方法的重载,该重载接收一个 lambda 表达式,用于选择要比较的属性。