2012-02-20 90 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中有四行,但沒有一個與我測試中的recordId相匹配。

代碼沒有說謊,所以我對LINQ的理解是不正確的。有人可以向我解釋爲什麼第一個返回4行時應該返回0嗎?

+0

'db.MyForm1_hosps.Where(ta => ta.recordId == recordId);' – 2012-02-20 16:56:12

回答

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 2012-02-20 17:15:10

相關問題