【问题标题】:Multiple conditions on a left outer join clause in a LINQ queryLINQ 查询中左外连接子句的多个条件
【发布时间】:2020-06-12 21:15:31
【问题描述】:

我想使用 LINQ 语法编写以下 SQL 查询,以了解 LINQ 查询的基础知识。

SELECT q.*, qpph.*
  FROM [Questions] AS q
  LEFT OUTER JOIN [QuestionPoolPickHandles] AS qpph
    ON qpph.QuestionId = q.Id AND qpph.PickerId = 100
  WHERE qpph.Id IS NULL;

如何使用 LINQ 语法同时在其ON 子句中应用左外连接和条件?从我的阅读来看,这似乎是不可能的。

这是我迄今为止尝试过的。

var result = from q in context.Questions
             join qpph in context.PoolPickHandles
               on q.Id equals qpph.PickerId into Handles  // notice the 'qpph.PickerId = 100' is absent
             from m in Handles.DefaultIfEmpty()
             where m == null
             select q;

任何进一步的阐述将不胜感激。

【问题讨论】:

标签: c# sql sql-server linq


【解决方案1】:

在有关问题的 cmets 的帮助下,我想出了使用 LINQ 语法编写查询的方法。

from q in context.Questions
join qpph in context.PoolPickHandles
  on new { questionId = q.Id, pickerId = user.Id } 
    equals new { questionId = qpph.QuestionId, pickerId = qpph.PickerId } 
      into Handles
from m in Handles.DefaultIfEmpty()
where m == null
select q;

【讨论】:

    猜你喜欢
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    相关资源
    最近更新 更多