Пример #1
0
        /// <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&lt;TOut&gt;.</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);
        }
Пример #2
0
 private static IQueryable BuildUserProjectionQueryable <TIn>(this IQueryable <TIn> source,
                                                              IProjectedQuery request
                                                              )
 {
     return(request.Select.IsEmptyNullOrWhiteSpace() ? source : source.Select(request.Select));
 }