Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
如何处理LINQ查询没有返回的结果?_Linq_Entity Framework_Entity Framework 4 - Fatal编程技术网

如何处理LINQ查询没有返回的结果?

如何处理LINQ查询没有返回的结果?,linq,entity-framework,entity-framework-4,Linq,Entity Framework,Entity Framework 4,以下LINQ查询工作正常,除非没有要返回的结果。然后抛出InvalidOperationException 处理这个问题的最佳方法是什么?如何测试结果的存在性,如果没有结果,如何继续?我想尝试一下接球,但觉得必须有一个更优雅的解决方案 在本例中,我只希望得到第一个结果的Id。可能还有其他情况,我希望返回整个对象 var drId = dcDest.drs.Where(dr => dr.ContactID == contactId) .Select

以下LINQ查询工作正常,除非没有要返回的结果。然后抛出InvalidOperationException

处理这个问题的最佳方法是什么?如何测试结果的存在性,如果没有结果,如何继续?我想尝试一下接球,但觉得必须有一个更优雅的解决方案

在本例中,我只希望得到第一个结果的Id。可能还有其他情况,我希望返回整个对象

var drId = dcDest.drs.Where(dr => dr.ContactID == contactId)
                      .Select(dr => dr.Id).First();

int xId = drId;

您应该使用
SingleOrDefault()

FirstOrDefault()
也可以工作,但实际上您是说集合中应该只有一个,这使得“SingleOrDefault()”成为更合适的选择(如果有多个,它将抛出异常)

另一方面,如果您需要一个序列,但需要处理没有返回元素的情况,则也可以使用
DefaultIfEmpty()
在序列为空时返回默认值。看


当它为空时,您想要什么行为?id为零或其他什么?

您应该使用
SingleOrDefault()

FirstOrDefault()
也可以工作,但实际上您是说集合中应该只有一个,这使得“SingleOrDefault()”成为更合适的选择(如果有多个,它将抛出异常)

另一方面,如果您需要一个序列,但需要处理没有返回元素的情况,则也可以使用
DefaultIfEmpty()
在序列为空时返回默认值。看


当它为空时,您想要什么行为?id为零或其他?

如果返回值为空,则id为sero就可以了。如果返回值为空,则id为sero就可以了。