/
AMachine
/
MMDB_Backend
Обзор
Документация
Войти
/
AMachine
/
MMDB_Backend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
MMDB.Data/Extensions/BansSorting.cs
36 строк
1 KB
AssaultMachine
refactor sorting (по-человечески)
17 май 2025, 20:14
17 май 2025, 20:14
411b7f9
Код
Авторство
О чём код?
using MMDB.Core.FilterParameters; using MMDB.Core.Models; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using MMDB.Data.Entities.SS13; namespace MMDB.Data.Extensions; public static class BansSorting { public static readonly IReadOnlyDictionary<string, Expression<Func<BanEntity, object?>>> SortSelectors = new Dictionary<string, Expression<Func<BanEntity, object?>>>(StringComparer.OrdinalIgnoreCase) { ["Ckey"] = b => b.Ckey, ["RoundId"] = b => b.RoundId, ["ExpirationTime"] = b => b.ExpirationTime, ["ACkey"] = b => b.ACkey, ["BanTime"] = b => b.Bantime, ["UnbannedCkey"] = b => b.UnbannedCkey, }; public static IReadOnlyList<string> GetAvailableSortFields() => SortSelectors.Keys.ToList(); public static IQueryable<BanEntity> Sort(this IQueryable<BanEntity> bans, BanParameters parameters) { var sortBy = parameters.SortBy ?? "Ckey"; var descending = parameters.SortDesc ?? false; if (!SortSelectors.TryGetValue(sortBy, out var selector)) selector = SortSelectors["Ckey"]; return descending ? bans.OrderByDescending(selector) : bans.OrderBy(selector); } }