【问题标题】:Linq to SQl with multiple Joins具有多个连接的 Linq 到 SQL
【发布时间】:2013-01-03 07:10:30
【问题描述】:

我正在尝试编写一个 linq to SQL lambda 查询,它等效于以下 SQL 查询。

Select t.Task_Id
FROM taskSet ts
JOIN taskSet tsg ON tsGroup.SetId = ts.SetId
JOIN tasks t ON t.task_id = tsg.TaskId AND t.task_type_id = 10 AND t.row_status = 1 AND t.status = 0
WHERE ts.TaskId = @TaskId

我已经到了下面。现在,如果我尝试再添加一个连接并检查 && 条件,它会给我错误。请帮助我了解如何进行此操作。

m_context.TaskSet
  .Join( m_context.TaskSet, 
   ts => ts.SetId,
   tsg => tsg.SetId,
   (ts, tsg) => new {ts, tsg})

【问题讨论】:

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


【解决方案1】:

当等值连接(参见C# reference on Join)多个集合时,为了清楚起见,我可能会考虑使用查询语法而不是方法链。您在 ON 子句中设置的条件必须作为 .Where() 条件(并且它们将在翻译时移至 WHERE 子句)。例如:

from ts in m_context.TaskSets
join tsg in m_context.TaskSets on ts.SetId equals tsg.SetId 
join t in m_context.Tasks on tsg.TaskId equals t.task_id 
where (t.task_type_id == 10)
   && (t.row_status == 1)
   && (t.status == 0)
   && (ts.TaskId == taskId)
select new {ts, tsg};

【讨论】:

    猜你喜欢
    • 2015-02-05
    • 2019-02-18
    • 2015-01-20
    • 2010-11-10
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    相关资源
    最近更新 更多