C# 这两个LINQ语句之间的区别是什么?

C# 这两个LINQ语句之间的区别是什么?,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我的代码中有第1条语句,发现它没有给出准确的计数,当正确答案为18时,它返回1。为了尝试调试这个问题,我在这里创建了第二条语句,然后计数返回18。我只是不明白这两者之间有什么区别。看起来第一个更紧凑 我目前正在背靠背地运行这两条语句,并且我确信数据库不会在这两条语句之间发生变化 int count = (from s in surveysThisQuarter where s.FacilityID == facility.LocationID

我的代码中有第1条语句,发现它没有给出准确的计数,当正确答案为18时,它返回1。为了尝试调试这个问题,我在这里创建了第二条语句,然后计数返回18。我只是不明白这两者之间有什么区别。看起来第一个更紧凑

我目前正在背靠背地运行这两条语句,并且我确信数据库不会在这两条语句之间发生变化

int count = (from s in surveysThisQuarter
             where s.FacilityID == facility.LocationID
             select s.Deficiencies).Count();
vs


这是因为第二个代码段是缺陷计数的总和,而第一个代码段是缺陷计数。
这与您的第二个代码片段相同

int count = (from s in surveysThisQuarter 
             where s.FacilityID == facility.LocationID 
             select s.Deficiencies.Count()).Sum(); 

这是因为第二个代码段是缺陷计数的总和,而第一个代码段是缺陷计数。
这与您的第二个代码片段相同

int count = (from s in surveysThisQuarter 
             where s.FacilityID == facility.LocationID 
             select s.Deficiencies.Count()).Sum(); 

第一种形式是计算匹配行的数量。您应该使用Sum扩展方法。

第一种形式是计算匹配行的数量。您应该改用求和扩展方法。

在第一个查询中,您选择了一组“缺陷集”,并计算得到的整数数。相反,您希望通过它的声音将它们相加:

int count = (from s in surveysThisQuarter
             where s.FacilityID == facility.LocationID
             select s.Deficiencies.Count()).Sum();
或者(可能生成更好的SQL,谁知道呢)


在第一个查询中,您选择了一组“缺陷集”,并计算得到的整数数。相反,您希望通过它的声音将它们相加:

int count = (from s in surveysThisQuarter
             where s.FacilityID == facility.LocationID
             select s.Deficiencies.Count()).Sum();
或者(可能生成更好的SQL,谁知道呢)


第一个是在
IEnumerable
上返回
计数(或任何类型)。结果将与
surveysThisQuarter.Count()相同。这是因为结果实际上是集合的集合

第二个是计算所有的缺陷——这可能是你想要的


对于第一个正常工作,您需要
选择多个
,而不是
选择
,以平展您的收藏。

第一个是在
IEnumerable
上返回一个
计数
(或任何类型)。结果将与
surveysThisQuarter.Count()相同。这是因为结果实际上是集合的集合

第二个是计算所有的缺陷——这可能是你想要的

对于第一个正常工作,您需要
选择多个
,而不是
选择
,以平展您的收藏。

我的最佳猜测:

计数!=总数

您想要
.Count
的累积值吗?

我的最佳猜测:

计数!=总数

您想要
.Count
的累积值吗