2012-02-20 3 views
2

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

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, но ни один из них не соответствует записи в моем тесте.

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

+0

'db.MyForm1_hosps.Where (ta => ta.recordId == recordId);' –

ответ

9

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

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

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

+0

derp derp, вот что я получаю от использования метода, основанного исключительно на его имени. спасибо за объяснение и предложение об изменении. – peroija

Смежные вопросы