C# 这两个LINQ语句之间的区别是什么?
我的代码中有第1条语句,发现它没有给出准确的计数,当正确答案为18时,它返回1。为了尝试调试这个问题,我在这里创建了第二条语句,然后计数返回18。我只是不明白这两者之间有什么区别。看起来第一个更紧凑 我目前正在背靠背地运行这两条语句,并且我确信数据库不会在这两条语句之间发生变化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
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
的累积值吗