LINQ中什么时候使用First()而不是FirstOrDefault()?
结论:
当你确定或期望序列中至少包含一个元素时,使用.First()。
当数据源无法确定,你需要检查是否存在一个元素时,使用.FirstOrDefault()。所以如果无法确定是否能够得到结果时首选FirstOrDefault,处理默认值。
使用场景:
考虑使用First(),如果:
1、总是期望返回序列的第一个元素
2、当结果没有元素或源为NULL时,期望抛出一个错误
考虑使用FirstOrDefault(),如果:
1、返回序列的第一个元素,如果没有找到元素,则返回类型默认值。
2、只有源为NULL时才抛出错误
3、类型默认值也是可以接受的
概念:
Enumerable.First:返回序列中的第一个元素
Enumerable.FirstOrDefault:返回序列中的第一个元素;如果未找到该元素,则返回默认值。
栗子:
string[] arrStr={"Hello","World" }; var first = arrStr.First(); Console.WriteLine(first); var firstOrDefault= arrStr.FirstOrDefault(o=>o=="TouTiao"); Console.WriteLine(string.IsNullOrEmpty(firstOrDefault) ? "not exists TouTiao" : "exists TouTiao");