Ejemplo n.º 1
0
        /// <summary>
        /// 构建搜索表达式
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="actionBuilder"></param>
        /// <typeparam name="TSource"></typeparam>
        /// <returns></returns>
        public static IPagingQueryBuilder <TSource> Search <TSource> (this IPagingQueryBuilder <TSource> builder, Action <ISearchOptions <TSource> > actionBuilder)
        {
            var options = new SearchOptions <TSource> (builder.Parameter);

            actionBuilder(options);
            builder.Filter(options.BuildExpression());
            return(builder);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 增加 聚合结果
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="aggExpression"></param>
        /// <typeparam name="TSource"></typeparam>
        /// <typeparam name="TAggregate"></typeparam>
        /// <returns></returns>
        public static async Task <PageResult <TSource, TAggregate> > WithAggregateAsync <TSource, TAggregate> (this IPagingQueryBuilder <TSource> builder, Expression <Func <IGrouping <bool, TSource>, TAggregate> > aggExpression)
        {
            var aggregate = await builder.Query.GroupBy(t => true).Select(aggExpression).SingleAsync();

            var result = await builder.ToPagingAsync();

            return(new PageResult <TSource, TAggregate> (result, aggregate));
        }