public override async IAsyncEnumerable <Path> ComputeSelect(EvaluationContext ctx) { if (ListCandidate != null && Template != null) { // Expression select var select = ListCandidate.ComputeSelect(ctx); await foreach (var atom in select) { yield return(atom); } // Expression paths var paths = ListCandidate.ComputePaths(ctx); await foreach (var path in paths) { yield return(path.Append("Id")); } // Inner template select var scopedCtx = ctx.Clone(); scopedCtx.SetLocalVariable(IteratorVariableName, new EvaluationVariable( eval: TemplateUtil.VariableThatThrows(IteratorVariableName), selectResolver: () => select, pathsResolver: () => paths )); await foreach (var atom in Template.ComputeSelect(scopedCtx)) { yield return(atom); } } }
public override IAsyncEnumerable <Path> ComputeSelect(EvaluationContext ctx) { return(ListCandidate.ComputeSelect(ctx)); }