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.

  • 相关阅读:
    数据库操作
    jquery 第一章
    算法很美 第一章
    python 学习第四天
    python学习第三天
    python学习第二天
    学习python的第一天
    C#-线程
    C#-流、存储
    C#-集合
  • 原文地址:https://www.cnblogs.com/chucklu/p/11718777.html
Copyright © 2011-2022 走看看