/// <summary> /// Builds a single result query from a queryable. /// </summary> /// <typeparam name="TIn">The type of the t in.</typeparam> /// <typeparam name="TOut">The type of the t out.</typeparam> /// <param name="qry">The qry.</param> /// <param name="request">The request.</param> /// <param name="projection">The projection.</param> /// <param name="serializeSettings">The serialize settings.</param> /// <returns>Task<TOut>.</returns> public static IQueryable ProjectedResultQuery <TIn, TOut>(this IQueryable <TIn> qry, IProjectedQuery request, Func <TIn, TOut> projection = null, JsonSerializerSettings serializeSettings = null ) where TOut : new() { var tmp = qry.BuildOutputQueryable(projection, serializeSettings); if (request.Select.IsEmptyNullOrWhiteSpace()) { Console.WriteLine(tmp.Expression.ToString()); return(tmp); } var result = tmp.BuildUserProjectionQueryable(request); Console.WriteLine(result.Expression.ToString()); return(result); }
private static IQueryable BuildUserProjectionQueryable <TIn>(this IQueryable <TIn> source, IProjectedQuery request ) { return(request.Select.IsEmptyNullOrWhiteSpace() ? source : source.Select(request.Select)); }