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");
posted @ 2022-07-21 14:43  wzyandi  阅读(182)  评论(0编辑  收藏  举报