public async Task <IActionResult> OnGetAsync(decimal PriceFrom, decimal PriceTo, SortState?sortState, int?MaterialId_select, int?ManufId_select, int?pageIndex, string searchString) { ProductsIQ = _db.GetAllProducts().Where(p => p.Profile.Status == true); ViewData["MaterialsId"] = _materials.MaterialToList(); //получаем материалы ViewData["ManufId"] = _manuf.ManufToList(); //сохраняем состояние фильтрации if (sortState != null) { SortState = sortState; } if (MaterialId_select != null) { MaterialIdState = MaterialId_select; } if (ManufId_select != null) { ManufIdState = ManufId_select; } PriceFromState = PriceFrom; PriceToState = PriceTo; searchString = this.searchString; //обрабатываем по фильтрам FilterPrice(PriceFrom, PriceTo); if (searchString != null) { ProductsIQ = _db.SearchProduct(searchString); } if (!ProductsIQ.Any()) //проверяем, есть ли что-то { TempData["Message"] = "Ничего не найдено"; } ProductsIQ = _db.Sorting(ProductsIQ, sortState); //сортировка //пагинация int pageSize = 9; Products = await PaginatedList <Products> .CreateAsync( ProductsIQ.AsNoTracking(), pageIndex ?? 1, pageSize); //вызываем метод пагинации return(Page()); }
private void FilterPrice(decimal PriceFrom, decimal PriceTo) { if (PriceFrom >= 0 && PriceTo > 0) { ProductsIQ = ProductsIQ.Where(x => x.Price >= PriceFrom && x.Price <= PriceTo); } else if (PriceFrom > 0 && PriceTo == 0) { ProductsIQ = ProductsIQ.Where(x => x.Price >= PriceFrom); } if (MaterialIdState != null) { ProductsIQ = ProductsIQ.Where(x => x.Profile.FacadeMaterialsId == MaterialIdState); } if (ManufIdState != null) { ProductsIQ = ProductsIQ.Where(x => x.Profile.FurnitureManufacturersId == ManufIdState); } }