C# 两种linq查询结果之间的差异
我想了解为什么这两个查询返回不同的结果 此查询返回6: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
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?