public void MultipleSelectManyProjectionWorks() { Reset(); var dataQuery = TestableThing.MakeQuery(5); IQueryable <Tuple <string, string, string> > SelectMany(IQueryable <TestableThing> query) => query.SelectMany(t => t.ChildThings, (t, c) => new { parentId = t.Id, childId = c.Id, children = c.ChildThings }).SelectMany(tc => tc.children, (tc, tcc) => new { tc.parentId, tc.childId, grandChildId = tcc.Id }).Select(t => Tuple.Create(t.parentId, t.childId, t.grandChildId)); var query = SelectMany(IQueryableExtensions.CreateQueryTemplate <TestableThing>()); var json = Serializer.Serialize(query); // make sure we're not just pulling from the cache Reset(); var newQuery = Serializer.DeserializeQuery <Tuple <string, string, string> >(json, dataQuery); var expected = SelectMany(dataQuery).ToList(); var actual = newQuery.ToList(); Assert.NotNull(actual); Assert.Equal(expected, actual); }
private IQueryable <QueryHelper> TestQuery() => IQueryableExtensions.CreateQueryTemplate <QueryHelper>() .Where(q => q.Id == nameof(QueryHelper) && q.Created > DateTime.Now.AddDays(-1)) .Skip(2) .Take(3) .OrderBy(q => q.Created);
private void PopulateDropDowns(RaceViewModel model) { var selectListItem = IQueryableExtensions.Default_SelectListItem(); model.FinYears = _finYearBL.GetSelectListItem(true, true); model.OrganisationTypes = _context.OrganisationType .Include(a => a.Organisations) .Where(a => a.Organisations.Any()) .ToSelectListItem(a => a.Name, x => x.Id.ToString()); model.Countries = _context.Country .Include(a => a.Provinces) .Where(a => a.Provinces.Any()) .ToSelectListItem(a => a.Name, x => x.Id.ToString()); model.Distances = _context.Distance .ToSelectListItem(a => a.Name, x => x.Id.ToString(), true); model.Organisations = selectListItem; model.RaceDefinitions = selectListItem; model.Provinces = selectListItem; model.RaceDistances = new List <RaceDistanceViewModel>(); model.RaceDistancesSelectList = selectListItem; model.Genders = selectListItem; }
public void GivenNonRemoteQueryWhenExecuteRemoteAsyncThenShouldThrowNullReference() { var query = IQueryableExtensions.CreateQueryTemplate <TestThing>(); Assert.Throws <NullReferenceException>( () => query.ExecuteRemote()); }
public void GivenTargetNullWhenIsPartOfCalledThenShouldReturnFalse() { var source = IQueryableExtensions.CreateQueryTemplate <IdType>() .Take(5); Assert.False(eq.IsPartOf(source.Expression, null)); }
public virtual async Task <ActionResult <IEnumerable <dynamic> > > GetAllAsync([FromQuery] string fields, [FromQuery] string asc, [FromQuery] string desc, [FromQuery] string type, [FromQuery] string rating, [FromQuery] string date, [FromQuery] string range) { var query = _context.Set <TModel>().AsQueryable(); if (!string.IsNullOrWhiteSpace(asc) || !string.IsNullOrWhiteSpace(desc)) { query = query.OrderByAscOrDesc(asc, desc); } if (!string.IsNullOrWhiteSpace(type) || !string.IsNullOrWhiteSpace(rating) || !string.IsNullOrWhiteSpace(date)) { string[] fieldNames = { "Type", "Rating", "Date" }; query = query.FilterCustomized(fieldNames, type, rating, date); } if (!string.IsNullOrWhiteSpace(range)) { var tab = range.Split('-'); var start = int.Parse(tab[0]); var end = int.Parse(tab[1]); //query = query.RangePagination(tab[0], tab[1]); query = query.Where(x => x.ID >= start && x.ID <= end); } if (!string.IsNullOrWhiteSpace(fields)) { var tab = fields.Split(','); // var results = await IQueryableExtensions.SelectDynamic<TModel>(query, tab).ToListAsync(); var results = await query.SelectDynamic(tab).ToListAsync(); return(results.Select((x) => IQueryableExtensions.SelectObject(x, tab)).ToList()); } else { return(Ok(ToJsonList(await query.ToListAsync()))); } }
/// <summary> /// 获取活动评论 /// </summary> /// <param name="id"></param> /// <returns></returns> public async Task <IActionResult> GetComments(Guid id, string listPageParaJson) { var listPagePara = new ListPageParameter(); if (listPageParaJson != null) { listPagePara = Newtonsoft.Json.JsonConvert.DeserializeObject <ListPageParameter>(listPageParaJson); } ViewBag.activityId = id; //获取一级评论 var commentList = await _commonExtension.GetAll().OrderByDescending(x => x.CommentDataTime).Include(x => x.Activity).Include(x => x.User).Include(x => x.User.Avatar).Where(x => x.Activity.ID == id && x.ParentGrade == null).ToListAsync(); var comments = new List <CommentVM>(); foreach (var item in commentList) { var commentVM = new CommentVM(item); commentVM.CommentChildrens = await _commonExtension.GetAll().OrderBy(x => x.CommentDataTime).Include(x => x.Activity).Include(x => x.AcceptUser).Include(x => x.User).Include(x => x.User.Avatar).Where(x => x.ParentGrade == item.ID).ToListAsync(); comments.Add(commentVM); } var commentPageList = IQueryableExtensions.ToPaginatedList(comments.AsQueryable(), listPagePara.PageIndex, listPagePara.PageSize); var commentCollections = new List <CommentVM>(); foreach (var commentTermPage in commentPageList) { commentCollections.Add(commentTermPage); } var pageGroup = PagenateGroupRepository.GetItem(commentPageList, 5, listPagePara.PageIndex); ViewBag.PageGroup = pageGroup; ViewBag.PageParameter = listPagePara; return(View("~/Views/BusinessView/ActivityTermView/_GetComments.cshtml", commentCollections)); }
public TrainingRequestService(DBContext context, IUnitOfWork unitOfWork, IQueryableExtensions <TrainingRequest> query) : base(context, unitOfWork) { _dbContext = context; _unitOfWork = unitOfWork; _queryableExtensions = query; }
public void ExecutesAll() { var queryable = GetIQueryable(); var particles = new List <Mock <IFilterParticle <IQueryableApplyTests> > >() { GetParticle(), GetParticle(), GetParticle(), GetParticle(), }; // Create the MockSequence to validate the call order var sequence = new MockSequence(); foreach (var p in particles) { p.InSequence(sequence) .Setup(x => x.GetExpression(It.IsAny <ParameterExpression>())) .Returns <Expression>(x => { return(Expression.Constant(true)); }); } var result = IQueryableExtensions.Apply( source: GetIQueryable(), particles: particles.Select(x => x.Object).AsEnumerable() ); foreach (var p in particles) { p.Verify(x => x.GetExpression(It.IsAny <ParameterExpression>())); } }
private void PopulateDropDowns(MemberViewModel model) { var selectListItem = IQueryableExtensions.Default_SelectListItem(); var countries = _context.Country.Include(a => a.Provinces).ThenInclude(a => a.Cities); model.Genders = _context.Gender.ToSelectListItem(a => a.Name, x => x.Id.ToString()); model.Titles = _context.Title.ToSelectListItem(a => a.Name, x => x.Id.ToString()); model.Nationalities = _context.Country.ToSelectListItem(a => a.Name, x => x.Id.ToString()); model.IDTypes = _context.IDType.ToSelectListItem(a => a.Name, x => x.Id.ToString());; model.Address = new AddressViewModel { Countries = countries.Where(a => a.Provinces.Any()).ToSelectListItem(a => a.Name, x => x.Id.ToString()), Provinces = selectListItem, Cities = selectListItem, Towns = selectListItem, Suburbs = selectListItem }; if (model.Id != 0) { model.Members = _context.Member.Where(a => a.Id != model.Id) .Include(a => a.Person.Gender) .ToSelectListItem(a => a.Person.FullName, x => x.Id.ToString(), true); } }
public async Task <IEnumerable <Vehicle> > GetVehicles(VehicleQuery queryObject) { var query = context.Vehicles .Include(v => v.Model) .ThenInclude(m => m.Make) .Include(v => v.Features) .ThenInclude(vf => vf.Feature) .AsQueryable(); if (queryObject.MakeId.HasValue) { query = query.Where(v => v.Model.MakeId == queryObject.MakeId); } var columnsMap = new Dictionary <string, Expression <Func <Vehicle, object> > > { ["make"] = v => v.Model.Make.Name, ["model"] = v => v.Model.Name, ["contactName"] = v => v.ContactName, ["id"] = v => v.Id }; query = IQueryableExtensions <Vehicle> .ApplyOrdering(query, queryObject, columnsMap); query = IQueryableExtensions <Vehicle> .ApplyPaging(query, queryObject); return(await query.ToListAsync()); }
public async Task <IActionResult> List(string keywork, string probably, string listPageParaJson) { var listPagePara = new ListPageParameter(); if (listPageParaJson != null) { listPagePara = Newtonsoft.Json.JsonConvert.DeserializeObject <ListPageParameter>(listPageParaJson); } var atCollection = new List <ActivityTerm>(); if (!String.IsNullOrEmpty(keywork)) { Expression <Func <ActivityTerm, bool> > condtion = x => x.Name.Contains(keywork) || x.User.Name.Contains(keywork) || x.AnAssociation.Name.Contains(keywork) || x.Address.Contains(keywork); atCollection = await _activityTermExtension.GetAll().Include(x => x.User).Include(x => x.AnAssociation).Include(x => x.Avatar).Where(condtion).Where(x => x.Status == ActivityStatus.未开始 && x.IsDisable).ToListAsync(); if (probably == "1") { atCollection = atCollection.Where(x => x.AnAssociation != null).ToList(); } else if (probably == "2") { atCollection = atCollection.Where(x => x.User != null && x.AnAssociation == null).ToList(); } } else { atCollection = await _activityTermExtension.GetAll().Include(x => x.User).Include(x => x.AnAssociation).Include(x => x.Avatar).Where(x => x.Status == ActivityStatus.未开始 && x.IsDisable).ToListAsync(); if (probably == "1") { atCollection = atCollection.Where(x => x.AnAssociation != null).ToList(); } else if (probably == "2") { atCollection = atCollection.Where(x => x.User != null && x.AnAssociation == null).ToList(); } } var activityTermPageList = IQueryableExtensions.ToPaginatedList(atCollection.AsQueryable(), listPagePara.PageIndex, 12); var activityCollections = new List <ActivityTermVM>(); foreach (var activityTermPage in activityTermPageList) { activityCollections.Add(new ActivityTermVM(activityTermPage) { EnteredNumber = (await _activityUserExtension.GetAll().Where(x => x.ActivityTermId == activityTermPage.ID).ToListAsync()).Count }); } var pageGroup = PagenateGroupRepository.GetItem(activityTermPageList, 5, listPagePara.PageIndex); ViewBag.PageGroup = pageGroup; ViewBag.PageParameter = listPagePara; return(View("~/Views/BusinessView/ActivityTermView/_List.cshtml", activityCollections)); }
private void PopulateDropDowns(RaceResultImportViewModel model) { var selectListItem = IQueryableExtensions.Default_SelectListItem(); model.People = _context.Person .Where(a => a.Members.Any()) .ToSelectListItem(a => a.FullName, x => x.Id.ToString()); }
/// <summary> /// Deserializes a query from the raw json. /// </summary> /// <typeparam name="T">The type of the query.</typeparam> /// <param name="json">The json text.</param> /// <param name="host">The <see cref="IQueryable{T}"/> host to create the query.</param> /// <param name="config">The optional configuration.</param> /// <returns>The deserialized <see cref="IQueryable{T}"/>.</returns> public static IQueryable <T> DeserializeQuery <T>( string json, IQueryable <T> host = null, Action <IConfigurationBuilder> config = null) { host = host ?? IQueryableExtensions.CreateQueryTemplate <T>(); return(DeserializeQuery(host, json, config) as IQueryable <T>); }
public EmployeeService(DBContext context, IUnitOfWork unitOfWork, IQueryableExtensions <Employee> query, IPasswordResetService PS, IUploadernDownloader UnDService) : base(context, unitOfWork) { _dbContext = context; _unitOfWork = unitOfWork; _passwordResetService = PS; _uploadndownloadService = UnDService; _queryableExtensions = query; }
private void PopulateDropDowns(OrganisationViewModel model) { model.Provinces = IQueryableExtensions.Default_SelectListItem(); model.Countries = _context.Country .Include(a => a.Provinces) .Where(a => a.Provinces.Any()) .ToSelectListItem(a => a.Name, x => x.Id.ToString()); model.OrganisationTypes = _context.OrganisationType.ToSelectListItem(a => a.Name, x => x.Id.ToString()); }
private void PopulateDropDowns(WinnerViewModel model) { model.Frequencies = _context.Frequency .ToSelectListItem(a => a.Name, x => x.Id.ToString()); model.FinYears = _finYearBL.GetLatestFinYearSelectItem(); model.CalendarMonths = _context.CalendarMonth.OrderBy(a => a.Ordinal).ToSelectListItem(a => a.Name, x => x.Id.ToString(), excludeSort: true); model.Awards = IQueryableExtensions.Default_SelectListItem(); model.Members = IQueryableExtensions.Default_SelectListItem(); }
/// <summary> /// Deserializes a query from the raw json. /// </summary> /// <typeparam name="T">The type of the query.</typeparam> /// <param name="root">The serialization root.</param> /// <param name="host">The <see cref="IQueryable{T}"/> host to create the query.</param> /// <param name="config">The optional configuration.</param> /// <param name="stateCallback">Register a callback to inspect the state.</param> /// <returns>The deserialized <see cref="IQueryable{T}"/>.</returns> public static IQueryable <T> DeserializeQuery <T>( SerializationRoot root, IQueryable host = null, Action <IConfigurationBuilder> config = null, Action <SerializationState> stateCallback = null) { host = host ?? IQueryableExtensions.CreateQueryTemplate <T>(); return(DeserializeQuery(host, root, config, stateCallback) as IQueryable <T>); }
public static void InitFactory(IQueryableExtensions queryableExtensions) { if (QueryableExtensions != null) { throw new Exception($"Attempted to initialise {nameof(QuerableExtensionsFactory)} multiple times"); } QueryableExtensions = queryableExtensions ?? throw new ArgumentNullException(nameof(queryableExtensions)); }
public void HandlesEmptyList() { var result = IQueryableExtensions.Apply( source: GetIQueryable(), particles: Array.Empty <IFilterParticle <IQueryableApplyTests> >() ); Assert.NotNull(result); }
public void ThrowsOnNullParticles() { Assert.Throws <ArgumentNullException>("particles", () => { IQueryableExtensions.Apply( source: GetIQueryable(), particles: (IEnumerable <IFilterParticle <IQueryableApplyTests> >)null ); }); }
private IQueryable <TestThing> GetQuery(bool remote = true) { var core = IQueryableExtensions.CreateQueryTemplate <TestThing>(); if (remote) { core = core.AsRemoteQueryable(context); } return(core.OrderBy(t => EF.Property <string>(t, nameof(TestThing.Id))).Take(5)); }
public virtual async Task <ActionResult <IEnumerable <dynamic> > > Sort([FromQuery] string fields, [FromQuery] string asc, [FromQuery] string desc) { var query = _context.Set <T>().AsQueryable(); if (!string.IsNullOrWhiteSpace(asc)) { var tab2 = asc.Split(','); //on verifie si on a deux éléments dans le tableau pour savoir si on va faire le thenBy() if (tab2.Length == 1) { query = IQueryableExtensions.SelectColonnesAscOne(query, tab2[0]); } else { query = IQueryableExtensions.SelectColonnesAsc(query, tab2); } } if (!string.IsNullOrWhiteSpace(desc)) { var tab3 = desc.Split(','); //on verifie si on a deux éléments dans le tableau pour savoir si on va faire le thenBy() if (tab3.Length == 1) { query = IQueryableExtensions.SelectColonnesDescOne(query, tab3[0]); } else { query = IQueryableExtensions.SelectColonnesDesc(query, tab3); } } if (!string.IsNullOrWhiteSpace(fields)) { var tab1 = fields.Split(','); // var results = await IQueryableExtensions.SelectDynamic<TModel>(query, tab).ToListAsync(); var results = await query.SelectModel(tab1).ToListAsync(); return(results.Select((x) => IQueryableExtensions.SelectObject(x, tab1)).ToList()); // toujours penser a faire le select a la fin return(await query.ToListAsync()); } else { return(Ok(ToJsonList(await query.ToListAsync()))); } }
/// <summary> /// Creates a trackable query based on the <see cref="DbContext"/> reference. /// </summary> /// <typeparam name="T">The <see cref="Type"/> of the query.</typeparam> /// <param name="template">A template to access the property.</param> /// <returns>A new <see cref="IQueryable"/> to usee.</returns> /// <exception cref="ArgumentNullException">Thrown when template is null.</exception> /// <exception cref="ArgumentException">Thrown when template does not refer to the right context.</exception> public static IQueryable <T> Query <T>( Expression <Func <TContext, DbSet <T> > > template) where T : class { VerifyTemplate(template); var memberExpression = template.AsEnumerable().OfType <MemberExpression>().First(); return(IQueryableExtensions.CreateQueryTemplate <T>() .AsRemoteQueryable(new RemoteContext( typeof(TContext), memberExpression.Member as PropertyInfo))); }
public async Task <IEnumerable <Vehicle> > GetVehicles(Filter filter) { var query = _context.Vehicles .Include(v => v.VehicleFeatures) .ThenInclude(vf => vf.Feature) .Include(v => v.Model) .ThenInclude(m => m.Make).AsQueryable(); if (filter.MakeId.HasValue) { query = query.Where(v => v.Model.MakeId == filter.MakeId); } if (filter.ModelId.HasValue) { query = query.Where(v => v.ModelId == filter.ModelId); } // Sorting with Dictionary. var columnsMap = new Dictionary <string, Expression <Func <Vehicle, object> > >() { ["make"] = v => v.Model.Make.Name, ["model"] = v => v.Model.Name, ["contactName"] = v => v.ContactName, ["id"] = v => v.Id }; query = IQueryableExtensions.ApplyOrdering(filter, query, columnsMap); // Sorting without Dictionary. /*if (filter.SortBy == "make") * { * query = filter.IsSortAscending ? query.OrderBy(v => v.Model.Make.Name) : query.OrderByDescending(v => v.Model.Make.Name); * } * if (filter.SortBy == "model") * { * query = filter.IsSortAscending ? query.OrderBy(v => v.Model.Name) : query.OrderByDescending(v => v.Model.Name); * } * if (filter.SortBy == "contactName") * { * query = filter.IsSortAscending ? query.OrderBy(v => v.ContactName) : query.OrderByDescending(v => v.ContactName); * } * if (filter.SortBy == "id") * { * query = filter.IsSortAscending ? query.OrderBy(v => v.Id) : query.OrderByDescending(v => v.Id); * }*/ return(await query.ToListAsync()); }
public virtual async Task <ActionResult <T> > Search([FromQuery] string lastname, [FromQuery] string genre, [FromQuery] string sort) { var query = _context.Set <T>().AsQueryable(); //solution 2: optimisation de la requete SQL if (!string.IsNullOrWhiteSpace(lastname)) { //var tab1 = lastname.Split(','); if (lastname.StartsWith("*") && lastname.EndsWith("*")) { //&& lastname.EndsWith("*") query = IQueryableExtensions.SelectColonnesName(query, "lastname", lastname); } else { return(NotFound(new { Message = $"Le lastname {lastname} doit etre encadré par des *" })); } if (!string.IsNullOrWhiteSpace(genre)) { var tab3 = genre.Split(','); // //on verifie si on a deux éléments dans le tableau pour savoir si on va faire le expression.or() if (tab3.Length == 1) { query = IQueryableExtensions.SelectColonnesGenderOne(query, "genre", tab3[0]); } else { query = IQueryableExtensions.SelectColonnesGender(query, "genre", tab3); } } if (!string.IsNullOrWhiteSpace(sort)) { var tab2 = sort.Split(','); query = IQueryableExtensions.SelectColonnesAsc(query, tab2); } return(Ok(ToJsonList(await query.ToListAsync()))); } else { return(NotFound(new { Message = $"name {lastname} not found" })); } }
/// <summary> /// 根据关键词检索人员数据集合,返回给前端页面 /// </summary> /// <param name="keywork"></param> /// <returns></returns> public async Task <IActionResult> List(string keywork, string listPageParaJson, string pageIndex) { var listPagePara = new ListPageParameter(); if (listPageParaJson != null && listPageParaJson != "") { listPagePara = Newtonsoft.Json.JsonConvert.DeserializeObject <ListPageParameter>(listPageParaJson); } listPagePara.PageIndex = Convert.ToInt32(pageIndex); var boVMCollection = new List <ApplicationUserVM>(); if (!String.IsNullOrEmpty(keywork) && keywork != "undefined") { Expression <Func <ApplicationUser, bool> > condtion = x =>//Contains(参数字符串是否包含于string对象中) x.Name.Contains(keywork) || x.SchoolAddress.Contains(keywork) || x.School.Contains(keywork); var userCollection = await _userExtension.GetAll().Include(x => x.Avatar).Where(condtion).OrderByDescending(x => x.RegisterTime).ToListAsync(); foreach (var bo in userCollection) { boVMCollection.Add(new ApplicationUserVM(bo)); } } else { var userCollection = await _userExtension.GetAll().Include(x => x.Avatar).OrderByDescending(x => x.RegisterTime).ToListAsync(); foreach (var bo in userCollection) { boVMCollection.Add(new ApplicationUserVM(bo)); } } var userCollectionPageList = IQueryableExtensions.ToPaginatedList(boVMCollection.AsQueryable <ApplicationUserVM>(), listPagePara.PageIndex, listPagePara.PageSize); var userCollections = new List <ApplicationUserVM>(); foreach (var userCollection in userCollectionPageList) { userCollections.Add(userCollection); } var pageGroup = PagenateGroupRepository.GetItem <ApplicationUserVM>(userCollectionPageList, 3, listPagePara.PageIndex); ViewBag.PageGroup = pageGroup; ViewBag.PageParameter = listPagePara; return(View("~/Views/ApplicationOrganization/ApplicationUser/_List.cshtml", userCollections)); }
public async Task <IActionResult> Index() { var anCollection = await _anAssociationExtension.GetAllIncludingAsyn(x => x.User); var anVmCollection = new List <AnAssociationVM>(); foreach (var an in anCollection) { var anVM = new AnAssociationVM(an); anVmCollection.Add(anVM); } var pageSize = 10; var pageIndex = 1; var anAssociationList = anVmCollection.OrderBy(x => x.Name).FirstOrDefault(); //处理分页 var anAssociationCollectionPageList = IQueryableExtensions.ToPaginatedList(anVmCollection.AsQueryable <AnAssociationVM>(), pageIndex, pageSize); var anAssociationCollections = new List <AnAssociationVM>(); foreach (var anAssociationCollection in anAssociationCollectionPageList) { anAssociationCollections.Add(anAssociationCollection); } //提取当前分页关联的分页器实例 var pageGroup = PagenateGroupRepository.GetItem(anAssociationCollectionPageList, 5, pageIndex); ViewBag.PageGroup = pageGroup; var listPageParameter = new ListPageParameter() { PageIndex = anAssociationCollectionPageList.PageIndex, Keyword = "", PageSize = anAssociationCollectionPageList.PageSize, ObjectTypeID = "", ObjectAmount = anAssociationCollectionPageList.TotalCount, SortDesc = "Default", SortProperty = "UserName", PageAmount = 0, SelectedObjectID = "" }; ViewBag.PageParameter = listPageParameter; return(View("~/Views/GroupOrganization/AnAssociation/Index.cshtml", anAssociationCollections)); }
public async Task <IActionResult> OrderList(string selectNnm) { ViewBag.UserLogonInformation = GetUserName(); var listPagePara = new ListPageParameter() { ObjectTypeID = "Order", // 对应的归属类型ID PageIndex = 1, // 当前页码 PageSize = 4, // 每页数据条数 为"0"时显示所有 PageAmount = 0, // 相关对象列表分页处理分页数量 ObjectAmount = 0, // 相关的对象的总数 Keyword = "", // 当前的关键词 SortProperty = "SortCode", // 排序属性 SortDesc = "default", // 排序方向,缺省值正向 Default,前端用开关方式转为逆向:Descend SelectedObjectID = "", // 当前页面处理中处理的焦点对象 ID IsSearch = false, // 当前是否为检索 }; listPagePara.PageIndex = selectNnm != null?Convert.ToInt32(selectNnm) : 1; var user = User.Claims.FirstOrDefault(); if (user.Value == new Guid().ToString()) { return(View("../../Views/Home/Logon")); } var shop = _ShopRepository.GetSingleBy(x => x.ShopForUser.Id == user.Value); //查询订单详细所关联的商品列表 var orderItems = _OrderItemRepository.FindBy(x => x.ShopName == shop.Name); //获取订单和订单对应的用户和商品 var orVMCollection = new List <SK_WM_OrderItemVM>(); //存放用户所有订单 var OrderAll = orderItems.AsQueryable <SK_WM_OrderItem>(); var OrderCollectionPageList = IQueryableExtensions.ToPaginatedList(OrderAll, listPagePara.PageIndex, listPagePara.PageSize); foreach (var order in OrderCollectionPageList) { var omVM = new SK_WM_OrderItemVM(order); orVMCollection.Add(omVM); } var pageGroup = PagenateGroupRepository.GetItem <SK_WM_OrderItem>(OrderCollectionPageList, 3, listPagePara.PageIndex); ViewBag.PageGroup = pageGroup; ViewBag.PageParameter = listPagePara; return(View("../../Views/BusinessOrganization/BusinessBG/OrderList", orVMCollection)); }
/// <summary> /// Creates a trackable query based on the <see cref="DbContext"/> reference. /// </summary> /// <typeparam name="T">The <see cref="Type"/> of the query.</typeparam> /// <param name="template">A template to access the property.</param> /// <returns>A new <see cref="IQueryable"/> to usee.</returns> /// <exception cref="ArgumentNullException">Thrown when template is null.</exception> /// <exception cref="ArgumentException">Thrown when template does not refer to the right context.</exception> public static IQueryable <T> Query <T>( Expression <Func <TContext, DbSet <T> > > template) where T : class { Ensure.NotNull(() => template); var memberExpression = template.AsEnumerable().OfType <MemberExpression>().First(); if (memberExpression.Member.DeclaringType != typeof(TContext)) { throw new ArgumentException($"{typeof(DbContext)} <> {template}", nameof(template)); } return(IQueryableExtensions.CreateQueryTemplate <T>() .AsRemoteQueryable(new RemoteContext( typeof(TContext), memberExpression.Member as PropertyInfo))); }