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.

  • 相关阅读:
    uniapp开发注意事项
    uniapp生成海报带二维码及保存
    严格模式的this
    数据类型
    短路特性
    第九周程序改错
    矩阵转置
    二分法求根
    三天打鱼两天晒网
    LeetCode7
  • 原文地址:https://www.cnblogs.com/chucklu/p/11718777.html
Copyright © 2011-2022 走看看