【问题标题】:Linq not finding matching record that is thereLinq 找不到匹配的记录
【发布时间】:2013-09-10 05:42:12
【问题描述】:

我正在尝试查找我知道数据库中存在的记录。使用此查询搜索它时,什么也找不到。

List<OrganizationALE> ales =
                _ctx.OrganizationALEs.Where(c => c.OrganizationId.Equals(organizationId) && c.LastModified.Equals(modified) && c.StartDate.Equals(start)).ToList();

但是当我使用此查询进行搜索时,使用 watch 的结果中显然存在。

如果我尝试在下一行使用

将其拉出

var found = ales.First(a =&gt; a.LastModified == modified);

我得到一个例外说Sequence contains no matching element

【问题讨论】:

  • 您是否尝试过检查生成的 SQL 语句并针对数据库手动运行它?
  • 是的,如果你能监控数据库会话并得到生成的SQL语句就好了。
  • @DaveSwersky 我该怎么做?
  • @DaveSwersky 我想它会在上面发布,谢谢

标签: c# asp.net-mvc-3 linq entity-framework-4


【解决方案1】:

我敢打赌这是因为modified 和/或start 包含的毫秒数在数据库中存储的精度不同(SQL Server 中的datetime?),因此数据库中的比较失败。

可能的解决方案是here(第二点和第三点适用于您的情况)。基本上提供不太精确的 DateTime 值(截断毫秒)或在 SQL Server 中使用 datetime2(7) 或避免使用与 DateTime 值的相等比较并改用 &gt;=&lt;=

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多