Хотите применить сортировку к отфильтрованным результатам - PullRequest
0 голосов
/ 03 июля 2019

Я хотел бы отфильтровать записи в моей базе данных, а затем применить сортировку по возрастанию / убыванию к отфильтрованным результатам.Однако я не знаю, как это сделать!Я могу фильтровать или сортировать, но если я фильтрую, то применяю сортировку, фильтр очищается.

Мой контроллер:

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>

Я бы хотел, чтобы параметры фильтра сохранялись доПользователь щелкает по своему усмотрению, чтобы очистить их.

Спасибо за понимание и советы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...