2012-04-10 173 views
0

我有這3個表:如何獲取父,只有相關表的第一個孩子

過程,行動和Process_Actions(多對多,其註冊所有操作一個過程可以執行基本上,這個表有PROCESS_ID,的action_id和一個唯一的ID(訂貨)。

我要的是一個LINQ查詢來獲取所有過程的列表,並獲得只有最後行動(按日期排序)

這是我的工作。SQL查詢:

SELECT P.Id, P.Name, PA.Action_Id FROM Process P 
    JOIN Process_Actions PA ON P.Id = PA.Process_Id 
    WHERE PA.Id IN (SELECT MAX (PA.Id) FROM Process_Actions INNER JOIN Process_Actions PA ON P.Id = PA.Process_Id) 
+0

嗯...我沒有在您的T-SQL示例中看到Action參考。 – 2012-04-10 16:03:06

+0

我只需要Process_Actions中引用的Action_Id – 2012-04-10 16:17:43

回答

1

試試這個:

context.Processes.Select(p => new { Process = p, 
    LastAction = p.Actions.OrderbyDescending(a => a.Date).FirstOrDefault() }) 

假設Action有一個屬性Date(正如你所說的按日期排列)。

0

我會嘗試這樣的事情

var maxId = (from pa in context.Process_Actions 
join pa on pa.Id = pa.Process_Id) 
select (int?)pa.Id).Max(); 

var query = from p in context.Process 
join pa in context.Process_Actions on p.Id equals pa.Process_Id 
where maxId.Contains(pa.Id) 
select new 
{ 
    p.Id, 
    p.Name, 
    pa.Action_Id 
} 
相關問題