在一个list<int>中查找最大的整数值

51

我有一个包含多个元素的List<int>。 我知道如果使用foreach遍历它,可以获取所有值,但我只需要列表中的最大整数值。

var l = new List<int>() { 1, 3, 2 };
7个回答

81

假设使用的是.NET Framework 3.5或更高版本:

var l = new List<int>() { 1, 3, 2 };
var max = l.Max();
Console.WriteLine(max); // prints 3

Enumerable类中有很多很酷的时间节省者,就像这些一样。


13

使用 Enumerable.Max

int max = l.Max();

7
int max = (from l in list select l).Max().FirstOrDefault();

根据评论,应该是这样的:

l.Max();

2
除非l是一个可枚举列表,否则它不会编译通过。此外,(from l in list select l)也没有意义。 - Yuriy Faktorovich
@Yuriy,你是对的——我现在正在做很多Linq到EF的工作,忘记了这只是一个简单的l.Max(); 我还假设List<int> 在此帖子的标题中声明为IEnumerable。 - Rob

4

您可以使用这个语法:

l.OrderByDescending(x => x).First(); //for maximum

l.OrderBy(x => x).First(); // for minimum

或者您可以使用LINQ中的Max()和Min()方法。

我希望我所说的会对您有所帮助......


3
using System.Linq;
using System.Collections.Generic;

int Max = list.Max();

2
这确实回答了问题!但我认为Yuriy已经解决了这个问题。 - jpaugh
@jpaugh 这回答了这个问题,但重复了之前两个回答的内容。 - Alex Butenko
我使用了 int Max = list.Max(); 但是由于缺少 using System.Linq; 命名空间,因此 Max() 没有应用于 list。 - Saleem Kalro
在使用集成开发环境时,显然会发现缺少 System.Linq,但对于像 HackerRank 等在线编辑器来说,这是一个重要的提示。 - Danila Polevshchikov

1
int max = listOfInts[0];
for(int i = 1; i < listOfInts.Count; i++) {
    max = Math.Max(max, listOfInts[i]);
}

1

如果您不想使用Linq:

l.Sort();
int min = l[0]; //1
int max = l[l.Count - 1]; //3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接