zoukankan      html  css  js  c++  java
  • 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,而这唯一一个元素,就是你指定的值

  • 相关阅读:
    在spring boot中三分钟上手apache顶级分布式链路追踪系统skywalking
    Spring Boot Admin 2.1.0
    Spring Boot Admin 详解(Spring Boot 2.0,基于 Eureka 的实现)
    Spring Cloud Sleuth + Zipkin 链路监控
    guava布隆过滤器
    红包算法
    java国际化之时区问题处理
    SpringCloud2.0 Hystrix Feign 基于Feign实现断路器
    SpringBoot 自定义线程池,多线程
    基于Redisson+SpringBoot的Redission分布式锁
  • 原文地址:https://www.cnblogs.com/A_ming/p/2451336.html
Copyright © 2011-2022 走看看