Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }