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.Sum()返回的数据不正确_C#_Linq_Entity Framework_Linq To Sql - Fatal编程技术网

C# LINQ.Sum()返回的数据不正确

C# LINQ.Sum()返回的数据不正确,c#,linq,entity-framework,linq-to-sql,C#,Linq,Entity Framework,Linq To Sql,我的数据库表包含以下内容: ID PollID Count 1 6 0 2 6 1 显然,在POLLID=6的位置执行:SELECT SUM[COUNT]将返回1 但是,此LINQ代码返回2 long totalVoteCount = (from pa2 in df.PollAnswers where pa2.Poll.ID == pollID select p

我的数据库表包含以下内容:

ID   PollID Count
1    6      0    
2    6      1
显然,在POLLID=6的位置执行:SELECT SUM[COUNT]将返回1

但是,此LINQ代码返回2

long totalVoteCount = (from pa2 in df.PollAnswers
                       where pa2.Poll.ID == pollID
                      select pa.Count).Sum();

在写这个问题时,我注意到上面的LINQ代码为其他查询返回了不正确的数据。我到底做错了什么?我想对特定POLLID的COUNT列求和。

而不是从df.PollAnswers中选择,然后执行pa2.Poll.ID。您应该尝试直接从Polls集合或它的任何名称中选择。这样,您可能会得到一些重复项,或者您的查询根本没有意义。

您正在从查询中投影pa.Count,而不是pa2.Count


因此,如果您在作用域中有一个pa变量,它引用了Count属性为1的对象,并且df.PollAnswers中有两个项,那么您的查询将始终返回2。

我想select pa.Count是一个输入错误?否则,如果你的作用域中有一个pa变量,它会解释你的问题。哇,这太尴尬了。Frederic发布了这个答案,我会接受的。Lambdas让这些查询对我来说更容易,df.PollAnswers.Wherepa=>pa.PollID==PollID.Sumpa2=>pa2.Count