} //текущее значение сортировки public ClientSortViewModel(ClientSortState sortOrder) { FIOSort = sortOrder == ClientSortState.FIOAsc ? ClientSortState.FIODesc : ClientSortState.FIOAsc; PassportDataSort = sortOrder == ClientSortState.PassportDataAsc ? ClientSortState.PassportDataDesc : ClientSortState.PassportDataAsc; Current = sortOrder; }
public async Task <IActionResult> Index(string fio, int page = 1, ClientSortState sortOrder = ClientSortState.FIOAsc) { int pageSize = 5; //фильтрация IQueryable <Client> clients = db.Clients; if (!string.IsNullOrEmpty(fio)) { clients = clients.Where(p => p.ClientFIO.Contains(fio)); } // сортировка switch (sortOrder) { case ClientSortState.FIODesc: clients = clients.OrderByDescending(s => s.ClientFIO); break; case ClientSortState.PassportDataAsc: clients = clients.OrderBy(s => s.ClientPassportData); break; case ClientSortState.PassportDataDesc: clients = clients.OrderByDescending(s => s.ClientPassportData); break; default: clients = clients.OrderBy(s => s.ClientFIO); break; } // пагинация var count = await clients.CountAsync(); var items = await clients.Skip((page - 1) *pageSize).Take(pageSize).ToListAsync(); // формируем модель представления ClientsViewModel viewModel = new ClientsViewModel { PageViewModel = new PageViewModel(count, page, pageSize), ClientSortViewModel = new ClientSortViewModel(sortOrder), ClientFilterViewModel = new ClientFilterViewModel(fio), Clients = items }; return(View(viewModel)); }