0

以下の SQL クエリに相当する linq to 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

以下までたどり着きました。ここで、結合をもう 1 つ追加して && 条件をチェックしようとすると、エラーが発生します。これを進める方法について私を助けてください。

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 に答える