zoukankan      html  css  js  c++  java
  • Sequence contains no elements

    这个错误,在使用List<T>的First函数遇到。

    Sequence contains no elements?

    From "Fixing LINQ Error: Sequence contains no elements":

    When you get the LINQ error "Sequence contains no elements", this is usually because you are using the First() or Single() command rather than FirstOrDefault() and SingleOrDefault().

    This can also be caused by the following commands:

    • FirstAsync()
    • SingleAsync()
    • Last()
    • LastAsync()
    • Max()
    • Min()
    • Average()
    • Aggregate()

    When to use .First and when to use .FirstOrDefault with LINQ?

    I would use First() when I know or expect the sequence to have at least one element. In other words, when it is an exceptional occurrence that the sequence is empty.

    Use FirstOrDefault() when you know that you will need to check whether there was an element or not. In other words, when it is legal for the sequence to be empty. You should not rely on exception handling for the check. (It is bad practice and might hurt performance).

    Finally, the difference between First() and Take(1) is that First() returns the element itself, while Take(1) returns a sequence of elements that contains exactly one element.

    .First() will throw an exception if there's no row to be returned, while .FirstOrDefault() will return the default value (NULL for all reference types) instead.

    So if you're prepared and willing to handle a possible exception, .First() is fine. If you prefer to check the return value for != null anyway, then .FirstOrDefault() is your better choice.

    But I guess it's a bit of a personal preference, too. Use whichever makes more sense to you and fits your coding style better.

  • 相关阅读:
    MySQL主从复制搭建
    CSS基本样式简单介绍
    前端代码编码规范
    Markdown语法简单介绍
    Java API 操作Redis
    Java API 操作Zookeeper
    MySQL优化
    ES 可视化工具
    消息队列MQ
    Docker基础
  • 原文地址:https://www.cnblogs.com/chucklu/p/11718777.html
Copyright © 2011-2022 走看看