0

我正在尝试编写一个 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})
4

1 回答 1

0

当等值连接(参见关于 Join 的 C# 参考)时,为了清楚起见,我可能会考虑使用查询语法而不是方法链。您在 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};
于 2013-01-10T18:53:43.870 回答