我四处搜索,并没有真正找到关于何时要使用.First以及何时要.FirstOrDefault与 LINQ 一起使用的明确答案。
.First
.FirstOrDefault
你想什么时候使用.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()当我知道或期望序列至少有一个元素时,我会使用它。换句话说,当序列为空是异常情况时。
First()
FirstOrDefault()当您知道需要检查是否存在元素时使用。换句话说,什么时候序列为空是合法的。您不应该依赖异常处理来进行检查。(这是不好的做法,可能会损害性能)。
FirstOrDefault()
First()最后,和之间的区别在于Take(1)返回First()元素本身,而Take(1)返回恰好包含一个元素的元素序列。
Take(1)