zoukankan      html  css  js  c++  java
  • EntityFramework First,FirstOrDefault,Single,SingleOrDefault的区别

    操作符

    如果源序列是空的

    源序列只包含一个元素

    源序列包含多个元素

    First

    抛异常

    返回该元素

    返回第一个元素

    FirstOrDefault

    返回default(TSource)

    返回该元素

    返回第一个元素

    Last

    抛异常

    返回该元素

    返回最后一个元素

    LastOrDefault

    返回default(TSource)

    返回该元素

    返回最后一个元素

    Single

    抛异常

    返回该元素

    抛异常

    SingleOrDefault

    返回default(TSource)

    返回该元素

    抛异常

     

    很明显,如果输入序列只有一个元素的话,这几个操作符的执行结果是非常一致的:) 类似的,如果输入的序列是空的的话,那么没有“OrDefault”的操作符会抛异常(InvalidOperationException),而带有“OrDefault”的操作符则会返回元素类型的默认值(引用类型的默认值为null,int的默认值为0,等等)。

    如果(可能是被过滤过的)输入序列含有多个元素的话,那这些操作符的执行结果的差异是很大的,First和Last的结果是顾名思义的,而Single抛出异常。值得注意的是,SingleOrDefault也会抛出异常,因为它要做的事又不是像这样:如果输入序列只有一个元素的话,返回该元素,否则的话返回默认值。如果你需要能够处理多元素序列的操作符的话,用First或Last。如果你需要处理可能为空的序列的话,使用FirstOrDefault或LastOrDefault。请注意,如果使用带有“OrDefault”的操作符的话,那么一个空的序列和一个仅包含默认值的序列的执行结果会是完全一样的。

     

    转载自 http://www.cnblogs.com/firstcsharp/archive/2013/02/27/2935833.html

  • 相关阅读:
    对公信贷系统与其他系统交互方式总结
    测试验收标准checklist
    测试风险汇报
    接口测试checklist
    52 | 深入浅出网站可扩展性架构设计
    51 | 深入浅出网站伸缩性架构设计
    html元素类型 块级元素、内联元素(又叫行内元素)和内联块级元素。(转载)
    IO流
    多线程
    Java网络编程
  • 原文地址:https://www.cnblogs.com/gmcn/p/7133317.html
Copyright © 2011-2022 走看看