2013-01-03 74 views
0

我想写一个linq SQL SQL lambda查询相当于下面的SQL查询。Linq 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}) 
+0

你得到的错误是什么? – ronen

+0

我得到了 - 不能将运算符&&应用于'int'和'int'类型的操作数 – San

+0

您能发布导致问题的完整代码吗? – ronen

回答

0

当equijoining(见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};