我四处搜索,并没有真正找到关于何时使用 .First
以及何时使用 .FirstOrDefault的明确答案
与 LINQ。
您什么时候想使用
.First
?仅当您希望在没有返回结果的情况下捕获异常时?var result = List.Where(x => x == "foo").First();
您什么时候想使用
.FirstOrDefault
?如果没有结果,您总是想要默认类型?var result = List.Where(x => x == "foo").FirstOrDefault();
那么 Take 呢?
var result = List.Where(x => x == "foo").Take(1);
最佳答案
当我知道或期望序列至少有一个元素时,我会使用 First()
。换句话说,当序列为空时出现异常。
当您知道需要检查是否存在某个元素时,请使用FirstOrDefault()
。换句话说,当序列为空是合法的。您不应依赖异常处理来进行检查。 (这是不好的做法,可能会影响性能)。
最后,First()
和 Take(1)
的区别是 First()
返回元素本身,而 Take(1)
返回仅包含一个元素的元素序列。
关于c# - 何时使用 .First 以及何时将 .FirstOrDefault 与 LINQ 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1024559/