EFCore 中 group 分组后,只选出每组中指定的数据行
先分组用 group 找到分组中的最大值,再用 join 查出对应的行。
var groupFlows = Context.Set<TInstanceFlow>().AsNoTracking()
.GroupBy(f => f.ProcessInstanceId)
.Select(g => new { instanceId = g.Key, finish = g.Max(f => f.Finish) });
var flows = Context.Set<TInstanceFlow>().AsNoTracking()
.Join(groupFlows,
o => new { f1 = o.ProcessInstanceId, f2 = o.Finish },
i => new { f1 = i.instanceId, f2 = i.finish },
(o, i) => new { o, i })
.Select(g => new
{
Id = g.o.Id,
ProcessInstanceId = g.i.instanceId,
IsCanUndo = g.o.IsCanUndo,
});
以梦为马 不负韶华

浙公网安备 33010602011771号