コード例 #1
0
        private static IQueryable <Company> FilterCompaniesByRevenue(CompanySearchCriteria searchCriteria, IQueryable <Company> query)
        {
            switch (searchCriteria.Revenue)
            {
            case RevenueRanges.ZeroToTenThousand:
                return(query.Where(x => x.TotalRevenue >= 0 && x.TotalRevenue < 10000));

            case RevenueRanges.TenThousandToHundredThousand:
                return(query.Where(x => x.TotalRevenue >= 10000 && x.TotalRevenue < 100000));

            case RevenueRanges.HundredThousandToMilion:
                return(query.Where(x => x.TotalRevenue >= 100000 && x.TotalRevenue < 1000000));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #2
0
        private static IQueryable <Company> FilterCompaniesByEmployees(CompanySearchCriteria searchCriteria, IQueryable <Company> query)
        {
            switch (searchCriteria.Employees)
            {
            case EmployeesRanges.ZeroToThousand:
                return(query.Where(x => x.NumberOfEmployees >= 0 && x.NumberOfEmployees < 1000));

            case EmployeesRanges.ThousandToTenThousand:
                return(query.Where(x => x.NumberOfEmployees >= 1000 && x.NumberOfEmployees < 10000));

            case EmployeesRanges.TenThousandToFiftyThousand:
                return(query.Where(x => x.NumberOfEmployees >= 10000 && x.NumberOfEmployees < 50000));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #3
0
        // GET: /Company/
        public ActionResult Index(CompanySearchCriteria searchCriteria)
        {
            var collection             = _db.Companies;
            IQueryable <Company> query = collection;

            if (searchCriteria == null)
            {
                return(View(new CompaniesModel()
                {
                    Companies = query.ToList(),
                    AvailableLocations = _db.Companies.Select(x => x.Location).Distinct().ToList()
                }));
            }

            if (!string.IsNullOrEmpty(searchCriteria.Location))
            {
                query = query.Where(x => x.Location == searchCriteria.Location);
            }
            if (searchCriteria.Revenue != RevenueRanges.None)
            {
                query = FilterCompaniesByRevenue(searchCriteria, query);
            }
            if (searchCriteria.Employees != EmployeesRanges.None)
            {
                query = FilterCompaniesByEmployees(searchCriteria, query);
            }

            var companiesModel = new CompaniesModel()
            {
                Companies             = query.ToList(), AvailableLocations = _db.Companies.Select(x => x.Location).Distinct().ToList(),
                RevenueFilter         = searchCriteria.Revenue,
                LocationFilter        = searchCriteria.Location,
                EmployeesRangesFilter = searchCriteria.Employees
            };

            return(View(companiesModel));
        }