【问题标题】:LINQ Query Incorrect Results Using AND and AND ORLINQ 使用 AND 和 AND OR 查询不正确的结果
【发布时间】:2014-03-19 17:34:01
【问题描述】:

我有一个 linq 查询导致错误的结果。我的猜测是它这样做是因为我缺少一个括号或其他东西。

var CurrentlyActiveIncidents = from b in db.Logs 
    join dc in db.Incidents 
    on b.LogID equals dc.LogID 
    where b.DateTimeResolved == null && 
        (dc.AssignedTechnician != null  || 
        dc.AssignedTechnician != CurrentUser)

我想要datetimeresolved == null 和分配的技术人员不为空或未分配给当前用户的所有事件。目前查询忽略了!= currentuser 部分,我不知道为什么?

【问题讨论】:

  • 忽略怎么办?你得到了哪些不应该得到的记录,或者没有得到你应该得到的记录?
  • 您确定要|| 而不是&&
  • 除非CurrentUsernull,否则指定的技术人员肯定总是“不是当前用户”或“非空”。我怀疑你想在这里&& - 换句话说,尚未解决的事件,并分配给当前用户以外的其他人。
  • @JonSkeet 否,因为一个事件可能属于多个不同的用户
  • @ASPCoder1450 那么分配的技术将不为空,所以条件通过了,它应该。

标签: c# asp.net sql linq


【解决方案1】:

因为您需要所有已分配技术人员的记录 != null 和 != 当前用户 所以你需要有 And Condition

var CurrentlyActiveIncidents = from b in db.Logs 
join dc in db.Incidents 
on b.LogID equals dc.LogID 
where b.DateTimeResolved == null && 
    (dc.AssignedTechnician != null  && 
    dc.AssignedTechnician != CurrentUser)

这将为您提供所需的记录

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    相关资源
    最近更新 更多