У меня есть ASP .Net Core 2.1 Web Api.Мне было интересно, есть ли «элегантное решение» для создания фильтров на моем DbContext на основе строк запроса?Итак ... скажем, у меня есть одна [необязательная] строка запроса:
// GET: api/Accounts
[HttpGet]
public IEnumerable<File> GetAccount([FromQuery] bool? isActive)
{
if (isActive.HasValue)
return _context.Accounts.Where(a => a.IsActive == isActive.Value);
else
return _context.Accounts;
}
Достаточно просто ... Но, скажем, у меня есть несколько (необязательных) строк запроса:
// GET: api/Accounts
[HttpGet]
public IEnumerable<File> GetAccount([FromQuery] bool? isActive, [FromQuery] string type, [FromQuery] int? agentId, [FromQuery] bool? someOtherFilter)
{
}
Как вы можете видеть, создание фильтров теперь становится сложнее, потому что может быть комбинация фильтров, в зависимости от того, какие из них были поставлены.Я мог бы проверить, имеет ли первая строка запроса значение, если это так, выполнить фильтр и сохранить результаты во временной переменной.Затем я мог бы проверить следующую строку запроса, если она имеет значение, затем выполнить этот фильтр для переменной temp, и так далее, и так далее.Но это звучит так, как будто это будет медленно ... Есть другие предложения?Спасибо ...