2012-04-10 171 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 
} 
相关问题