c# - Linq 返回意外结果

标签 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 行吗?

最佳答案

您的第一个查询有误。将 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/

相关文章:

具有 WCF 数据的 WPF 应用程序 - EF、Linq2Sql 或 WCF 数据服务 - 无似乎 'Easy'

c# - 我应该在 linq 搜索中使用字典还是列表?

c# - DLL 不能在 C# 中运行

c# - C#:NAudio-空路径名不合法

asp.net 从动态插入的文本框中获取文本一直返回 null

c# - Linq2SQL:事务涵盖了SubmitChanges?

.net - 为什么在 Dispose() 方法中隐式提交工作单元不好?

c# - Nunit 能否测试 Stylecop 自定义规则?

c# - 使用健康监控的 ASP.NET Web 应用程序日志记录不起作用

mysql - "mysql_native_password"失败,无法到达服务器 (ASP.NET)