Linq возвращает неожиданные результаты - PullRequest
2 голосов
/ 20 февраля 2012

У меня есть следующий запрос, который не должен возвращать строк, но возвращает 4:

var testAgainst = db.MyForm1_hosps.Select(ta => ta.recordId == recordId);

Если я использую следующий запрос, я получаю нулевые строки, как и ожидалось:

var testAgainst = from ta in db.MyForm1_hosps
                  where ta.recordId == recordId
                  select ta;

ТамВ MyForm1_hosp четыре строки, но ни одна из них не совпадает с recordId в моем тесте.

Код не лжет, поэтому мое понимание LINQ неверно.Может кто-нибудь объяснить мне, почему первый возвращает 4 строки, когда он должен возвращать 0?

1 Ответ

9 голосов
/ 20 февраля 2012

Ваш первый запрос содержит ошибку.Измените Select на Where.

var testAgainst = db.MyForm1_hosps.Where(ta => ta.recordId == recordId); 

. Изучение исходного запроса с помощью Select(ta => ta.recordId == recordId): Это вернет последовательность логических значений .Если ни одна из записей в db.MyForm1_hosps не имеет recordId значений, соответствующих вводу, все результаты будут ложными.Если у вас есть 4 записи, вы получите 4 ложных значения.У вас есть 4 результата, но они не того типа, о котором вы думаете!

...