Example #1
0
        public TResult MapResult <TResult>(object?source, Expression expression)
        {
            if (source != null && !(source is TResult) && source.IsCollection(out var enumerable))
            {
                var elementType = TypeHelper.GetElementType(enumerable.GetType()) ?? throw new RemoteLinqException($"Failed to get element type of {enumerable.GetType()}.");
                if (typeof(TResult).IsAssignableFrom(elementType) && expression is MethodCallExpression methodCallExpression)
                {
                    return(DynamicResultMapper.MapToSingleResult <TResult>(elementType, enumerable, methodCallExpression));
                }
            }

            return((TResult)source);
        }
Example #2
0
        public TResult MapResult <TResult>(object source, Expression expression)
        {
            if (source is IEnumerable enumerable)
            {
                var elementType = TypeHelper.GetElementType(enumerable.GetType());
                if (typeof(TResult).IsAssignableFrom(elementType) && expression is MethodCallExpression methodCallExpression)
                {
                    return(DynamicResultMapper.MapToSingleResult <TResult>(elementType, enumerable, methodCallExpression));
                }
            }

            return((TResult)source);
        }
Example #3
0
        /// <inheritdoc/>
        public TResult?MapResult <TResult>(object?source, Expression expression)
        {
            if (source is not null && source is not TResult && source.IsCollection(out var enumerable))
            {
                var elementType = TypeHelper.GetElementType(enumerable.GetType());
                if (typeof(TResult).IsAssignableFrom(elementType) && expression is MethodCallExpression methodCallExpression)
                {
                    return(DynamicResultMapper.MapToSingleResult <TResult>(elementType, enumerable, methodCallExpression));
                }
            }

            return(source is TResult result
                ? result
                : default);
 public Task <TResult> MapResultAsync <TResult>(IEnumerable <DynamicObject> source, Expression expression)
 => Task.Run(() => DynamicResultMapper.MapToType <TResult>(source, _mapper, expression));
 public Task <TResult> MapResultAsync <TResult>(IEnumerable <DynamicObject> source, Expression expression)
 {
     return(Task.Factory.StartNew(() => DynamicResultMapper.MapToType <TResult>(source, _mapper, expression)));
 }