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

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
C# 两种linq查询结果之间的差异_C#_Linq - Fatal编程技术网

C# 两种linq查询结果之间的差异

C# 两种linq查询结果之间的差异,c#,linq,C#,Linq,我想了解为什么这两个查询返回不同的结果 此查询返回6: var a = (from belg in contextArchive.Belgeler join zrf in contextArchive.Zarflar on belg.Parent_ID equals zrf.ID where belg.RefETTN == this.BelgeETTN select new { zrf }).Count(); 当此查询返回3时: var b

我想了解为什么这两个查询返回不同的结果

此查询返回6:

var a = (from belg in contextArchive.Belgeler
         join zrf in contextArchive.Zarflar on belg.Parent_ID equals zrf.ID
         where belg.RefETTN == this.BelgeETTN
         select new { zrf }).Count();
当此查询返回3时:

var b = (from belg in contextArchive.Belgeler
         join zrf in contextArchive.Zarflar on belg.Parent_ID equals zrf.ID
         where belg.RefETTN == this.BelgeETTN
         select new { zrf }).ToList();

countKabulRed = b.Count();

我相信b中有一些空值。a和b之间的不同之处在于a使用忽略空值的SQL计数,而b的计数同时包括空值和非空值。

它们生成的SQL查询是什么?如果是MSSQL,则可以检查SQL探查器以获取查询。从第一眼开始,第一个查询将在SQL端执行。第二个在后端。也许SQL查询有些不同,这对某种类型的DBMS会有什么影响?如果您查看了每个调用生成的SQL,那么应该会发现一些东西。如果您可以看到这两个查询相同,我认为它将与使用joinIt相关,实际上可以归结为contextArchive.Belgeler是什么。由于我们不知道所使用的linq提供程序,我们无法真正帮助您。尽管我想不出任何一个理智的提供者会在这里给出不同的结果,但我在两个查询中使用了linq提供者和那个提供者。你可以相信我是的b有一些空值。如何修复此问题,使第一次查询返回3?