/
AMachine
/
MMDB_Backend
Обзор
Документация
Войти
/
AMachine
/
MMDB_Backend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
MMDB.Data/Extensions/PlayersSorting.cs
29 строк
1 KB
AssaultMachine
refactor sorting (по-человечески)
17 май 2025, 20:14
17 май 2025, 20:14
411b7f9
Код
Авторство
О чём код?
using System.Linq.Expressions; using MMDB.Core.FilterParameters; using MMDB.Core.Models; using MMDB.Data.Entities.SS13; namespace MMDB.Data.Extensions; public static class PlayersSorting { public static IReadOnlyDictionary<string, Expression<Func<PlayerEntity, object?>>> SortSelector = new Dictionary<string, Expression<Func<PlayerEntity, object?>>>(StringComparer.OrdinalIgnoreCase) { ["Ckey"] = p => p.Ckey, ["ByondKey"] = p => p.ByondKey, ["FirstSeen"] = p => p.Firstseen, ["LastSeen"] = p => p.Lastseen, }; public static IQueryable<PlayerEntity> Sort(this IQueryable<PlayerEntity> players, PlayerParameters parameters) { var sortBy = parameters.SortBy ?? "Ckey"; var descending = parameters.SortDesc ?? false; if (!SortSelector.TryGetValue(sortBy, out var selector)) selector = SortSelector["Ckey"]; return descending ? players.OrderByDescending(selector) : players.OrderBy(selector); } }