Я хотел бы отфильтровать записи в моей базе данных, а затем применить сортировку по возрастанию / убыванию к отфильтрованным результатам.Однако я не знаю, как это сделать!Я могу фильтровать или сортировать, но если я фильтрую, то применяю сортировку, фильтр очищается.
Мой контроллер:
public async Task<IActionResult> Index(string sortOrder, string searchString, string cityString, string specialtyString)
{
ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewData["nameFilter"] = searchString;
ViewData["cityFilter"] = cityString;
ViewData["specialtyFilter"] = specialtyString;
var providers = from p in _context.Provider
select p;
if (!String.IsNullOrEmpty(searchString))
{
providers = providers.Where(s => s.ProviderName.Contains(searchString));
}
if (!String.IsNullOrEmpty(cityString))
{
providers = providers.Where(s => s.City.Contains(cityString));
}
if (!String.IsNullOrEmpty(specialtyString))
{
providers = providers.Where(s => s.ProviderType.Contains(specialtyString));
}
switch (sortOrder)
{
case "name_desc":
providers = providers.OrderByDescending(m => m.ProviderName);
break;
default:
providers = providers.OrderBy(m => m.ProviderName);
break;
}
return View(await providers.AsNoTracking().ToListAsync());
}
и соответствующее представление (частичное):
<th>
<a asp-action="Index" asp-route-sortOrder="@ViewData["NameSortParm"]">@Html.DisplayNameFor(model => model.ProviderName)</a>
</th>
Я бы хотел, чтобы параметры фильтра сохранялись доПользователь щелкает по своему усмотрению, чтобы очистить их.
Спасибо за понимание и советы!