LINQ :First、FirstOrDefault使用;Max、Min使用

关于Linq中First、FirstOrDefault;Last、LastOrDefault等方法的说明

这里以First、FirstOrDefault进行说明,其他类似。
1、First:取序列中满足条件的第一个元素,如果没有元素满足条件,则抛出异常
2、FirstOrDefault:取序列中满足条件的第一个元素,如果没有元素满足条件,则返回默认值(对于可以为null的对象,默认值为null,对于不能为null的对象,如int,默认值为0)
First、FirstOrDefault的区别在于:当没有元素满足条件时,一个抛出异常,一个返回默认值。
因此,在使用时,一定要注意这个区别:
1、当确信序列中一定有满足条件的元素时,使用First方法,取到元素后,无需判断是否为null
2、当序列中可能找不到满足条件的元素时,使用FirstOrDefault方法,然后,一定要对返回值是否为null,进行不同的处理a

关于Linq中Max、Min方法的使用

在使用Max或Min方法时,必须要保证调用方必须至少存在一个元素,若没有元素,则会抛出异常
如(假设ints的类型为IEnumerable:
int max = ints.Max(); //当ints的个数为0时,则抛出异常
为避免这个问题,一般情况下,可以如下编写:
int max = 0; //先设置一个默认值,即如果没有元素时,应该取的值
if (ints.Any())
{
max = ints.Max();
}

还有一种方式是使用DefaultIfEmpty方法:
ints.DefaultIfEmpty().Max(); //DefaultIfEmpty方法,会在ints元素个数为0时,返回一个存在唯一一个默认值元素的IEnumerable,这样调用Max时,就不会抛异常了
ints.DefaultIfEmpty(10).Max(); //也可以指定一个默认值,即当ints元素个数为0时,返回一个存在唯一一个元素的IEnumerable,而这唯一一个元素,就是你指定的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值