我有以下查询,它应该不返回任何行,但返回 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的理解是错误的。有人可以向我解释为什么第一个应该返回 0 时返回 4 行吗?
最佳答案
您的第一个查询有误。将 Select
更改为 Where
。
var testAgainst = db.MyForm1_hosps.Where(ta => ta.recordId == recordId);
使用 Select(ta => ta.recordId == recordId)
调查您的原始查询:这将返回一个 bool 值 序列。如果 db.MyForm1_hosps
中没有任何记录具有与输入匹配的 recordId
值,则结果都将为假。如果您有 4 条记录,您将得到 4 个假值。您有 4 个结果,但它们不是您认为的那种类型!
关于c# - Linq 返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9365035/