public static async Task <IEnumerable <dynamic> > GetDynamicSelect <TModel, TData>(this DataRequest request, IContextRepository contextRepository)
            where TModel : BaseModelClass
            where TData : BaseDataClass
        {
            Expression <Func <IQueryable <TModel>, IEnumerable <dynamic> > > exp = Expression.Parameter(typeof(IQueryable <TModel>), "q").BuildLambdaExpression <IQueryable <TModel>, IEnumerable <dynamic> >
                                                                                   (
                p => request.Distinct
                    ? request.Options.CreateDataSourceRequest()
                .CreateUngroupedMethodExpression(p.GetSelectNew <TModel>(request.Selects))
                .GetDistinct()
                    : request.Options.CreateDataSourceRequest()
                .CreateUngroupedMethodExpression(p.GetSelectNew <TModel>(request.Selects))
                                                                                   );

            return(await contextRepository.QueryAsync <TModel, TData, IEnumerable <dynamic>, IEnumerable <dynamic> >
                   (
                       exp,
                       request.SelectExpandDefinition
                   ));
        }