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 )); }