protected override ConstantExpression ProcessOperation(
            Type resultType,
            TranslatedQueryable translatedQueryable,
            Expression?selector,
            CancellationToken cancellation)
        {
            var elementType = translatedQueryable.ElementType;
            var returnType  = TypeHelper.GetValueTaskType(resultType);
            AsyncTypeAwaitable evaluationResult;

            if (selector is not null)
            {
                evaluationResult = translatedQueryable.QueryAdapter.MaxAsync(
                    elementType,
                    resultType,
                    translatedQueryable.GetQueryable(),
                    selector,
                    cancellation);
            }
            else
            {
                evaluationResult = translatedQueryable.QueryAdapter.MaxAsync(
                    elementType,
                    translatedQueryable.GetQueryable(),
                    cancellation);
            }

            return(Expression.Constant(evaluationResult.Instance, returnType));
        }
        protected override ConstantExpression ProcessOperation(
            TranslatedQueryable translatedQueryable,
            Expression?predicate,
            CancellationToken cancellation)
        {
            var elementType = translatedQueryable.ElementType;
            var returnType  = typeof(ValueTask <System.Boolean>);
            ValueTask <System.Boolean> evaluationResult;

            if (predicate is not null)
            {
                evaluationResult = translatedQueryable.QueryAdapter.AnyAsync(
                    elementType,
                    translatedQueryable.GetQueryable(),
                    predicate,
                    cancellation);
            }
            else
            {
                evaluationResult = translatedQueryable.QueryAdapter.AnyAsync(
                    elementType,
                    translatedQueryable.GetQueryable(),
                    cancellation);
            }

            return(Expression.Constant(evaluationResult, returnType));
        }
示例#3
0
        protected override ConstantExpression ProcessOperation(
            TranslatedQueryable translatedQueryable,
            Expression?predicate,
            CancellationToken cancellation)
        {
            var elementType = translatedQueryable.ElementType;
            var returnType  = TypeHelper.GetValueTaskType(elementType);
            var queryable   = translatedQueryable.GetQueryable();
            AsyncTypeAwaitable evaluationResult;

            if (predicate is null)
            {
                // TODO: Why are there overloads without a predicate, if we can just pass null in the more general
                //       overload?
                if (ReturnDefaultOnNoMatch)
                {
                    evaluationResult = translatedQueryable.QueryAdapter.FirstOrDefaultAsync(
                        elementType,
                        queryable,
                        cancellation);
                }
                else
                {
                    evaluationResult = translatedQueryable.QueryAdapter.FirstAsync(
                        elementType,
                        queryable,
                        cancellation);
                }
            }
            else
            {
                if (ReturnDefaultOnNoMatch)
                {
                    evaluationResult = translatedQueryable.QueryAdapter.FirstOrDefaultAsync(
                        elementType,
                        queryable,
                        predicate,
                        cancellation);
                }
                else
                {
                    evaluationResult = translatedQueryable.QueryAdapter.FirstAsync(
                        elementType,
                        queryable,
                        predicate,
                        cancellation);
                }
            }

            return(Expression.Constant(evaluationResult.Instance, returnType));
        }
 protected abstract ConstantExpression ProcessOperation(
     TranslatedQueryable translatedQueryable,
     Expression?predicate,
     CancellationToken cancellation);