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