我有这3张桌子:
流程,操作和流程操作(多对多,注册所有操作 进程可以执行。基本上,此表具有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 :(得分:1)
试试这个:
context.Processes.Select(p => new { Process = p,
LastAction = p.Actions.OrderbyDescending(a => a.Date).FirstOrDefault() } )
假设Action
有一个属性Date
(正如您所说按日期排序)。
答案 1 :(得分: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
}