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,而这唯一一个元素,就是你指定的值

  • 相关阅读:
    HDU 4472 Count DP题
    HDU 1878 欧拉回路 图论
    CSUST 1503 ZZ买衣服
    HDU 2085 核反应堆
    HDU 1029 Ignatius and the Princess IV
    UVa 11462 Age Sort
    UVa 11384
    UVa 11210
    LA 3401
    解决学一会儿累了的问题
  • 原文地址:https://www.cnblogs.com/A_ming/p/2451336.html
Copyright © 2011-2022 走看看