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)); }
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);