private FilterCatalogModel _filterCatalog(CatalogModel model) { var store = new StoreAction(); var filterModel = new FilterCatalogModel(); filterModel.groupId = model.groupId; if (model.goods == null || model.goods.Count == 0) { return(filterModel); } filterModel.minPrice = filterModel.selectedMinPrice = model.goods.Min(s => s.price); filterModel.maxPrice = filterModel.selectedMaxPrice = model.goods.Max(s => s.price); var brands = model.goods.Select(s => s.brandId).Where(s => s.HasValue).Distinct().ToList(); filterModel.brands = new List <BrandFilter>(); var brandsAll = store.GetGoodBrands(); if (brands?.Count() > 0) { foreach (var item in brands) { var brand = brandsAll.Single(s => s.id == item); filterModel.brands.Add(new BrandFilter { brandId = brand.id, brandName = brand.name, brandCount = model.goods.Count(s => s.brandId == brand.id), isChecked = true }); } } return(filterModel); }
public ActionResult FilterDo(FilterCatalogModel filter) { var model = GetCatalogModel(filter.groupId); model.goods = model.goods.Where(s => s.price >= filter.selectedMinPrice && s.price <= filter.selectedMaxPrice). Join(filter.brands.Where(s => s.isChecked), g => g.brandId, b => b.brandId, (g, b) => g).ToList(); model.filter.selectedMaxPrice = filter.selectedMaxPrice; model.filter.selectedMinPrice = filter.selectedMinPrice; filter.brands.Where(s => !s.isChecked).ToList()?.ForEach(b => model.filter.brands.FirstOrDefault(s => s.brandId == b.brandId).isChecked = false); return(View("Catalog", model)); }