LINQ .Sum () возвращает неверные данные - PullRequest
2 голосов
/ 12 января 2012

Моя таблица базы данных имеет следующее:

ID   PollID Count
1    6      0    
2    6      1

Очевидно, что: SELECT SUM([COUNT]) WHERE POLLID = 6 вернет 1

Однако этот код LINQ возвращает 2.

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

При написании этого вопроса я заметил, что приведенный выше код LINQ возвращает неверные данные для других запросов. Что именно я здесь делаю не так? Я хочу СУММА столбец COUNT для очага POLLID .

Ответы [ 2 ]

4 голосов
/ 12 января 2012

Вы проецируете pa.Count из вашего запроса вместо pa2.Count.

Поэтому, если у вас есть переменная pa в области видимости, которая ссылается на объект, свойство Count которого равно 1 и в df.PollAnswers есть два элемента, ваш запрос всегда будет возвращать 2.

1 голос
/ 12 января 2012

Вместо того, чтобы выбирать из df.PollAnswers и затем делать pa2.Poll.ID, вы должны попытаться выбрать непосредственно из коллекции Опросы (или любого другого имени). Таким образом, вы, вероятно, получите несколько дубликатов, или ваш запрос просто не имеет смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...