Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这两个lambda表达式之间有区别吗?_C#_Lambda - Fatal编程技术网

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

C# 这两个lambda表达式之间有区别吗?,c#,lambda,C#,Lambda,这两个Lambda表达式之间有什么区别?第二个似乎更紧凑,我应该一直这么做吗 DataContext.Employee.Where(c=>c.id==check_id && c.username==user_name).Select(c=>c.Name).FirstOrDefault(); 及 如果找不到匹配的元素,并且类型的默认值为null,则第二个版本可以抛出一个 第一个版本没有这个问题。BTW-可能需要将“c.username=user\u name”更改为“

这两个Lambda表达式之间有什么区别?第二个似乎更紧凑,我应该一直这么做吗

DataContext.Employee.Where(c=>c.id==check_id && c.username==user_name).Select(c=>c.Name).FirstOrDefault();


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


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

BTW-可能需要将“c.username=user\u name”更改为“c.username==user\u name”以添加到这一点上,这两个语句完全不同。第一种方法是先进行过滤,然后提取第一个。第二种方法是选择第一条记录,然后尝试将其与筛选条件相匹配。意图完全不同,第二个似乎给出了错误的业务结果(从技术上讲它会起作用)。@Pradeep:你的意思是带条件的
FirstOrDefault
返回第一个元素,如果它符合条件?那不是真的
FirstOrDefault
条件返回与条件匹配的第一个元素,它可以是第二个或任何其他元素,只是第一个匹配的元素。所以业务结果是正常的,只提到了
NullReferenceException
问题。
DataContext.Employee.FirstOrDefault(c=>c.id==check_id && c.username==user_name).Name;