2012-02-20 7 views
2

를 반환 내가 어떤 행을 반환하지 않지만 4 반환해야 다음 쿼리가 :이는 Linq에 예기치 않은 결과

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

: 나는 다음과 같은 쿼리를 사용하는 경우 예상대로

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

내가 제로 행을 얻을를 MyForm1_hosp에서는 4 행이지만 테스트에서는 recordId와 일치하지 않습니다.

코드가 거짓말이 아니므로 LINQ에 대한 제 이해가 잘못되었습니다. 누군가가 내게 이유를 설명 할 수있는 첫 번째 반환 4 행 때 0 반환해야합니까?

+0

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

답변

9

첫 번째 쿼리에 실수가 있습니다. SelectWhere으로 변경하십시오.

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

Select(ta => ta.recordId == recordId)하여 원래 쿼리를 조사 :이 논리 값의 순서를 반환합니다. db.MyForm1_hosps의 레코드 중 어느 것도 입력과 일치하는 값이 recordId이 아니면 결과가 모두 거짓입니다. 레코드가 4 개인 경우 4 개의 false 값을 갖게됩니다. 당신은 4 개의 결과를 가지고 있지만, 그들은 당신이 생각하는 유형이 아닙니다!

+0

derp derp, 그 이름에만 기반한 메소드를 사용하기 위해 얻는 것입니다. 설명과 변경 제안에 감사드립니다. – peroija