Я борюсь с алгоритмом поиска данных, который должен извлекать некоторые данные из базы данных, используя несколько полей.Каждое текстовое поле предоставляет определенный параметр, хранящийся в базе данных, доступ к которой осуществляется Entity Framework.Это работает, когда я ввожу данные во все поля, но если я оставляю любое поле пустым, он не получает никакой записи.Мой вопрос - как обрабатывать пустые поля.Если я оставлю любое поле без данных, он просто не должен учитывать этот параметр при выборе из базы данных и выбирать данные на основе ненулевых параметров.
Это то, что я создал до сих пор:
[HttpPost]
public ViewResult Search(string brand, string model, int? manufactDateMin,
int? manufactDateMax, int? priceMin, int? priceMax, int? engineCapMin,
int? engineCapMax, string engineType, int page = 1)
{
IEnumerable<Car> foundItems = repository.Cars
.Where(c => brand == null || c.Brand == brand)
.Where(c => model == null || c.Model == model)
.Where(c => manufactDateMin == null || manufactDateMax == null || (c.ManufactDate.Year >= manufactDateMin) && (c.ManufactDate.Year < manufactDateMax))
.Where(c => priceMin == null || priceMax == null || (c.Price >= priceMin) && (c.Price < priceMax))
.Where(c => engineCapMin == null || engineCapMax == null || (c.EngineCapacity >= engineCapMin) && (c.EngineCapacity < engineCapMax))
.Where(c => engineType == null || c.EngineType == engineType)
.OrderBy(c => c.Id)
.Skip(PageSize * (page - 1))
.Take(PageSize);
CarListViewModel VMmodel = new CarListViewModel
{
Cars = foundItems,
PagingInfo = new PagingInfo
{
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = foundItems.Count(),
},
CarType = null
};
return View("List", VMmodel);
}