如何获取父,只有相关表的第一个孩子
问题描述:
我有这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)
答
试试这个:
context.Processes.Select(p => new { Process = p,
LastAction = p.Actions.OrderbyDescending(a => a.Date).FirstOrDefault() })
假设Action
有一个属性Date
(正如你所说的按日期排列)。
答
我会尝试这样的事情
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
}
嗯...我没有在您的T-SQL示例中看到Action参考。 – 2012-04-10 16:03:06
我只需要Process_Actions中引用的Action_Id – 2012-04-10 16:17:43