コード例 #1
0
        private IQueryable <TGuitar> ApplyFilteringFor <TGuitar>(IGuitarRepository <TGuitar> repo, FilterDataModel filter) where TGuitar : GuitarModel
        {
            var all = repo.GetAll();

            if (SearchItemsExist(filter.SearchItems))
            {
                var searchItems = filter.SearchItems;
                all = all.Where(guitar => searchItems.All(item => guitar.Vendor.Name.ToLower().Contains(item) || guitar.Model.ToLower().Contains(item)));
            }
            if (PriceFilterExists(filter.PriceFilter))
            {
                var from = filter.PriceFilter.From;
                var to   = filter.PriceFilter.To;
                all = all.Where(g => from <= g.Price && g.Price <= to);
            }
            if (VendorFilterExists(filter.VendorFilter))
            {
                var vendors = filter.VendorFilter.Vendors.Select(v => v.Name);
                all = all.Where(g => vendors.Contains(g.Vendor.Name));
            }

            return(all);
        }