📜  linq 从列表中选择最大值 - C# (1)

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

LINQ 从列表中选择最大值 - C#

当我们需要从一个列表中选出其中的最大值时,使用LINQ可以方便地实现此功能。下面是使用LINQ从列表中选最大值的示例代码:

// 创建一个包含数字的列表
List<int> numbers = new List<int>() { 1, 5, 3, 9, 7 };

// 使用LINQ选出列表中最大的数字
int maxNumber = numbers.Max();

Console.WriteLine("列表中最大的数字为:" + maxNumber);

在上述代码中,我们首先创建了一个整数列表 numbers,并使用LINQ的 Max() 方法选出其中最大的数字。该方法返回列表中最大的元素,并抛出异常如果列表为空。

此外,我们还可以使用 Max() 方法的重载版本来获取特定属性的最大值,如下所示:

// 创建一个包含字符串的列表
List<string> strings = new List<string>() { "aaa", "abc", "defg", "bc" };

// 使用LINQ选出列表中长度最大的字符串
string maxLengthString = strings.Max(s => s.Length);

Console.WriteLine("列表中长度最大的字符串为:" + maxLengthString);

在上述代码中,我们创建了一个字符串列表 strings,并使用 Max() 方法的重载版本来选出其中长度最大的字符串。这里,我们使用了Lambda表达式 s => s.Length 来指定比较的依据为字符串长度。该Lambda表达式表示:对于列表中的每个字符串,返回它的长度,然后比较这些长度,最终选出长度最大的字符串。

值得注意的是,对于空列表,使用 Max() 方法和它的重载版本都会抛出异常。如果不希望抛出异常,可以使用 DefaultIfEmpty() 方法来设定默认值,如下所示:

// 创建一个空的整数列表
List<int> emptyList = new List<int>();

// 使用LINQ选出列表中最大的数字,如果列表为空,则返回默认值0
int maxNumber = emptyList.DefaultIfEmpty(0).Max();

Console.WriteLine("列表中最大的数字为:" + maxNumber);

在上述代码中,我们创建了一个空的整数列表 emptyList,并使用 DefaultIfEmpty() 方法设定列表为空时的默认值为0。然后使用 Max() 方法选出其中最大的数字。这里,由于 emptyList 是空的,因此 DefaultIfEmpty(0) 方法会将其转换成一个含有一个元素(值为0)的非空列表,然后 Max() 方法会选出该列表中的唯一元素0作为最大值。

以上就是从列表中选出最大值的LINQ示例代码和技巧。通过使用LINQ,我们可以轻松地实现对列表元素的筛选、排序、分组等操作,提高代码的可读性和可维护性。