Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Created December 30, 2025 17:35
Show Gist options
  • Select an option

  • Save sunmeat/4f62b7c12b9eb457b140e2b52c570307 to your computer and use it in GitHub Desktop.

Select an option

Save sunmeat/4f62b7c12b9eb457b140e2b52c570307 to your computer and use it in GitHub Desktop.
правки показу списку гравців у контролері для сортування по стовпчиках
//...
// GET: Players
public async Task<IActionResult> Index(string sortOrder, string currentSort)
{
// зберігаємо поточний порядок сортування для правильного відображення стрілок у заголовках
ViewData["CurrentSort"] = sortOrder;
// параметри для перемикання сортування
// чотири рядки нижче відповідають за сортування по імені, віку, позиції та команді
// ViewData - використовується для передачі даних від контролера до представлення, це словник ключ-значення, частина будь якого контролера в ASP.NET Core MVC
ViewData["NameSort"] = string.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewData["AgeSort"] = sortOrder == "age" ? "age_desc" : "age";
ViewData["PositionSort"] = sortOrder == "position" ? "position_desc" : "position";
ViewData["TeamSort"] = sortOrder == "team" ? "team_desc" : "team";
// базовий запит з підключенням команди
var players = _context.Players
.Include(p => p.Team)
.AsQueryable();
// сортування залежно від параметра
switch (sortOrder)
{
case "name_desc":
players = players.OrderByDescending(p => p.Name);
break;
case "age":
players = players.OrderBy(p => p.Age);
break;
case "age_desc":
players = players.OrderByDescending(p => p.Age);
break;
case "position":
players = players.OrderBy(p => p.Position);
break;
case "position_desc":
players = players.OrderByDescending(p => p.Position);
break;
case "team":
players = players.OrderBy(p => p.Team.Name);
break;
case "team_desc":
players = players.OrderByDescending(p => p.Team.Name);
break;
default: // за замовчуванням — по імені за зростанням
players = players.OrderBy(p => p.Name);
break;
}
return View(await players.ToListAsync());
}
// ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment