Linq回归意外结果

时间:2012-02-20 16:53:59

标签: c# asp.net linq-to-sql

我有以下查询,该查询不返回任何行,但返回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行?

1 个答案:

答案 0 :(得分:9)

您的第一个查询有误。将Select更改为Where

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

使用Select(ta => ta.recordId == recordId)调查您的原始查询:这将返回一系列布尔。如果db.MyForm1_hosps中没有任何记录的recordId值与输入匹配,则结果都将为false。如果您有4条记录,则会得到4个错误值。你有4个结果,但它们不是你认为的类型!