这两个lambda表达式之间有区别吗?

Vis*_*hal 0 c# lambda

这两个Lambda表达式之间有什么区别?第二个看起来更紧凑我应该总是这样做吗?

DataContext.Employee.Where(c=>c.id==check_id && c.username==user_name).Select(c=>c.Name).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

DataContext.Employee.FirstOrDefault(c=>c.id==check_id && c.username==user_name).Name;
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 15

NullReferenceException如果找不到匹配的元素,则第二个版本可以抛出该类型,并且该类型的默认值为null.

第一个版本没有这个问题.

  • @Pradeep:你的意思是`FirstOrDefault`有条件返回第一个元素如果它匹配条件?这不是真的.`FirstOrDefault`条件返回第一个元素THAT匹配条件,它可以是第二个或任何其他元素,只是第一个匹配.所以业务结果没问题,只提到了'NullReferenceException`问题. (2认同)