我到处搜索,但对于要.First
何时使用.FirstOrDefault
LINQ 和何时要使用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);
Single
和SingleOrDefault
。我讨厌人们用First
真心的话Single
; )
.FirstOrDefault()
Always(总是)使您有机会引发更有意义的异常。如果抛出了一个序列异常,并且.First()
在一个方法中抛出了多个异常,则可能很难分辨出哪个语句是问题所在。
.First
并且.FirstOrDefault
都接受谓词作为参数,所以var result = List.Where(x => x == "foo").First();
可以改写为var result = List.First(x => x == "foo");