LINQ中的Max
C#语言中LINQ的Max()
方法用以返回集合中最大的数字元素。
以下是一个使用Max()
方法获取整数集合中最大数的示例:
Max的方法语法
using System;
using System.Linq;
namespace LinqTutorial
{
public class MyProgram
{
static void Main(string[] args)
{
var numbers = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var max = numbers.Max();
Console.WriteLine($"集合numbers中最大的数为:{max}");
var filterMax = numbers.Where(x => x < 6).Max();
Console.WriteLine($"集合numbers中小于6的最大数为:{filterMax}");
Console.Read();
}
}
}
运行结果:
集合numbers中最大的数为:10
集合numbers中小于6的最大数为:5
Max的查询语法
using System;
using System.Linq;
namespace LinqTutorial
{
public class MyProgram
{
static void Main(string[] args)
{
var numbers = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var max = (from num in numbers select num).Max();
Console.WriteLine($"集合numbers中最大的数为:{max}");
var filterMax = (from num in numbers where num < 6 select num).Max();
Console.WriteLine($"集合numbers中小于6的最大数为:{filterMax}");
Console.Read();
}
}
}
Max()
方法一共有13个重载,其中支持委托类型的选择器,比如可以在Max
方法中编写复杂的语句,示例如下:
using System;
using System.Linq;
namespace LinqTutorial
{
public class MyProgram
{
static void Main(string[] args)
{
var numbers = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var max = numbers.Max(x =>
{
if (x < 5)
{
return x + 20;
}
return x;
});
Console.WriteLine($"集合numbers中的最大数为:{max}");
Console.Read();
}
}
}
运行结果:
集合numbers中的最大数为:24
与Count
等方法类似,Max
也可以操作复杂类型的集合。
比如,我们要从本系列的示例订单集合中找出最高的订单价格,使用LINQ的Max
方法实现如下:
using System;
using System.Linq;
namespace LinqTutorial
{
public class MyProgram
{
static void Main(string[] args)
{
var orders = FakeData.Orders;
var maxPrice = orders.Max(x => x.Price);
Console.WriteLine($"订单列表中最高的订单价格为:{maxPrice}");
Console.Read();
}
}
}
运行结果:
订单列表中最高的订单价格为:5699
注意:以上示例代码查找到的maxPrice
仅仅是订单集合中价格最高的订单的Price
属性值,而不是Order
订单元素。
如果有通过LINQ的Max
方法查询价格最高的订单元素,则要实现IComparable
接口,示例如下:
using System;
using System.Collections.Generic;
using System.Linq;
namespace LinqTutorial
{
public class MyProgram
{
static void Main(string[] args)
{
var orders = new List<MyOrder>
{
new() {Id = 1,Price = 1699.00},
new() {Id = 2,Price = 5999.00},
new() {Id = 3,Price = 1999.00},
new() {Id = 4,Price = 2899.00},
new() {Id = 5,Price = 999.00},
new() {Id = 6,Price = 4999.00},
};
var maxPriceOrder = orders.Max();
Console.WriteLine($"订单列表中价格最高的订单Id: {maxPriceOrder.Id},价格: {maxPriceOrder.Price}");
Console.Read();
}
}
public class MyOrder : IComparable<MyOrder>
{
public int Id { get; set; }
public double Price { get; set; }
public int CompareTo(MyOrder other)
{
if (ReferenceEquals(this, other)) return 0;
if (ReferenceEquals(null, other)) return 1;
return Price.CompareTo(other.Price);
}
}
}
运行结果:
订单列表中价格最高的订单Id: 2,价格: 5999
LINQ中的Min
LINQ中的Min
操作符与Max
操作符类似,只是Min
用以返回集合中最小的数字元素。具体操作示例请参考以上Max
文档。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册