/// <summary> /// 应用requestInput指定的排序参数 /// </summary> public static IQueryable <T> ApplySorting <T>(this IQueryable <T> query, ISortedResultRequest requestInput = null) where T : class { if (requestInput != null && !requestInput.Sorting.IsNullOrWhiteSpace()) //有排序参数 { return(query.OrderBy(requestInput.Sorting)); } return(query); }
public static IQueryable <T> OrderBy <T>(this IQueryable <T> source, ISortedResultRequest sorted) { if (sorted.Sorting.IsNullOrEmpty()) { return(source); } return(source.OrderBy(sorted.Sorting)); }
/// <summary> /// 只查Dto类型指定字段的列表数据 /// </summary> /// <typeparam name="TSource">实体类型</typeparam> /// <typeparam name="TDto">列表Dto类型</typeparam> /// <param name="query"></param> /// <param name="requestInput">查询参数(指定排序列)</param> /// <returns>查询出Dto类型指定字段的列表数据</returns> public static ListResultDto <TDto> ToListResult <TSource, TDto>(this IQueryable <TSource> query, ISortedResultRequest requestInput = null) where TSource : class where TDto : class { return(AsyncHelper.RunSync(() => query.ToListResultAsync <TSource, TDto>(requestInput))); }
/// <summary> /// 只查Dto类型指定字段的列表数据 /// </summary> /// <typeparam name="TSource">实体类型</typeparam> /// <typeparam name="TDto">列表Dto类型</typeparam> /// <param name="query"></param> /// <param name="requestInput">查询参数(指定排序列)</param> /// <returns>查询出Dto类型指定字段的列表数据</returns> public static async Task <ListResultDto <TDto> > ToListResultAsync <TSource, TDto>(this IQueryable <TSource> query, ISortedResultRequest requestInput = null) where TSource : class where TDto : class { query = query.ApplySorting(requestInput); var result = new ListResultDto <TDto>() { Items = await query.ProjectTo <TDto>().ToListAsync() }; return(result); }
/// <summary> /// Should apply sorting if needed. /// </summary> /// <param name="query">The query.</param> /// <param name="input">The input.</param> public static IQueryable <TEntity> ApplySorting <TEntity>(this IQueryable <TEntity> query, ISortedResultRequest sortInput) { //Try to sort query if available if (sortInput != null) { if (!sortInput.Sorting.IsNullOrWhiteSpace()) { return(query.OrderBy(sortInput.Sorting)); } } //IQueryable.Task requires sorting, so we should sort if Take will be used. //if (input is ILimitedResultRequest) //{ // return query.OrderByDescending(e => e.Id); //} //No sorting return(query); }