嘿我正在尝试创建一个过滤器,以查看有序流程中的下一个待处理步骤是否为类型批准。
每个活动都有一个数字'Sequence',表示步骤的顺序 我需要检查下一个是否正在等待并且是否为类型批准
这是有效的,但它看起来效率很低:
public Expression<Func<IPTORequest, bool>> BuildPendingManagerPTORequestFilterByDivision
(IPublicReadContext context)
{
return r => r.Activity.ActivitySteps.Any(a =>
a.ActivityStepType == ActivityStepType.Approval
&& a.Sequence == a.Activity.ActivitySteps.Where(s =>
s.Status == ActivityStepStatus.Pending)
.Min(s => s.Sequence)
);
}
主要问题是活动步骤正在引用其父级并再次迭代活动步骤。
有没有人知道我可以更有效地做到这一点,而不引用父母?
答案 0 :(得分:0)
我想我已找到答案,除非有人知道更有效的方式:
public Expression<Func<IPTORequest, bool>> BuildPendingOrderedSequencePTORequestFilter
(IPublicReadContext context)
{
return
r =>
r.Activity.ActivitySteps.Where(s => s.Status == ActivityStepStatus.Pending)
.OrderBy(s => s.Sequence)
.FirstOrDefault()
.ActivityStepType == ActivityStepType.Approval;
}