Пример #1
0
        /// <inheritdoc/>
        public TResult Execute <TResult>(Expression expression)
        {
            ExpressionHelper.CheckExpressionResultType <TResult>(expression);

            var rlinq       = ExpressionHelper.TranslateExpression(expression, _context);
            var dataRecords = _dataProvider(rlinq);

            return(_resultMapper.MapResult <TResult>(dataRecords, expression) !);
        }
Пример #2
0
        public TResult Execute <TResult>(Expression expression)
        {
            var rlinq       = TranslateExpression(expression, _typeInfoProvider, _canBeEvaluatedLocally);
            var dataRecords = _dataProvider(rlinq);
            var result      = object.Equals(default(TSource), dataRecords)
                ? default(TResult)
                : _resultMapper.MapResult <TResult>(dataRecords, expression);

            return(result);
        }
Пример #3
0
        public async IAsyncEnumerable <TResult> ExecuteAsyncRemoteStream <TResult>(Expression expression, [EnumeratorCancellation] CancellationToken cancellation)
        {
            cancellation.ThrowIfCancellationRequested();
            var rlinq = RemoteQueryProvider <TSource> .TranslateExpression(expression, _typeInfoProvider, _canBeEvaluatedLocally);

            cancellation.ThrowIfCancellationRequested();
            var asyncEnumerable = _dataProvider(rlinq, cancellation);

            cancellation.ThrowIfCancellationRequested();
            await foreach (var resultItem in asyncEnumerable.WithCancellation(cancellation))
            {
                cancellation.ThrowIfCancellationRequested();
                var result = _resultMapper.MapResult <TResult>(resultItem, expression);
                yield return(result);
            }
        }