我已经四处寻找并且没有真正找到关于何时想要使用.First以及何时想要使用.FirstOrDefaultLINQ 的明确答案.
你什么时候想用.First?只有当你想要在没有返回结果的情况下捕获异常时?
var result = List.Where(x => x == "foo").First();
Run Code Online (Sandbox Code Playgroud)你什么时候想用.FirstOrDefault?如果没有结果,你总是想要默认类型?
var result = List.Where(x => x == "foo").FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)就此而言,拿什么?
var result = List.Where(x => x == "foo").Take(1);
Run Code Online (Sandbox Code Playgroud)我提供的开源项目(OSP)代码中有多个位置,必须确定集合中的元素是否满足某个条件.
我已经看到Any(lambda expression)在某些情况下和FirstOrDefault(lambda expression) != null其他情况下使用LINQ表达式,但从未考虑过它.
我现在已达到这样的程度,我必须对从查询到数据库的集合进行一些迭代,并希望优化运行时.
所以我认为FirstOrDefault(lambda expression) != null应该比这更快Any(lambda expression),对吧?
在这种情况下FirstOrDefault(lambda expression) != null,迭代(可能)在找到满足条件的元素时停止(更糟糕的情况是它遍历整个集合并返回null).
在Any(lambda expression)我想象的情况下,即使找到满足条件的元素,迭代也会继续到集合的末尾.
编辑:以上情况并非如杰克逊教皇提到并链接相关的MSDN文章.
我的想法是正确的还是我错过了什么?