public Expression HandleLeave( SelectionVisitorContext context, IFieldSelection selection, Expression expression) { if (context.TryGetValueNode(ArgumentName, out IValueNode sortArgument) && selection.Field.Arguments[ArgumentName].Type is InputObjectType iot && iot is ISortInputType fit) { var visitor = new QueryableSortVisitor(iot, fit.EntityType); sortArgument.Accept(visitor); return(visitor.Compile(expression)); } return(expression); }
public static QueryableSortVisitor GetQueryableSortExpr <TDto>(this IResolverContext context) { QueryableSortVisitor queryableSortVisitor = null; if (context.Field?.Arguments[SortObjectFieldDescriptorExtensions.OrderByArgumentName]?.Type is InputObjectType iot && iot is ISortInputType fit) { var orderByValueNode = context.Argument <IValueNode>(SortObjectFieldDescriptorExtensions.OrderByArgumentName); if (orderByValueNode != null) { queryableSortVisitor = new QueryableSortVisitor(iot, fit.EntityType); orderByValueNode.Accept(queryableSortVisitor); } } return(queryableSortVisitor); }