This commit is contained in:
DHR60 2025-09-06 17:15:55 +08:00
parent 4d23911bfb
commit f2e27d2d6f

View file

@ -67,20 +67,56 @@ public class ProfilesSelectViewModel(Func<EViewAction, object?, Task<bool>>? upd
public Task SortServer(string colName) public Task SortServer(string colName)
{ {
_ = colName; if (colName.IsNullOrEmpty())
//if (colName.IsNullOrEmpty()) {
//{ return Task.CompletedTask;
// return; }
//}
var prop = typeof(ProfileItemModel).GetProperty(colName);
if (prop == null)
{
return Task.CompletedTask;
}
_dicHeaderSort.TryAdd(colName, true);
var asc = _dicHeaderSort[colName];
var comparer = Comparer<object?>.Create((a, b) =>
{
if (ReferenceEquals(a, b))
{
return 0;
}
if (a is null)
{
return -1;
}
if (b is null)
{
return 1;
}
if (a.GetType() == b.GetType() && a is IComparable ca)
{
return ca.CompareTo(b);
}
return string.Compare(a.ToString(), b.ToString(), StringComparison.OrdinalIgnoreCase);
});
object? KeySelector(ProfileItemModel x)
{
return prop.GetValue(x);
}
IEnumerable<ProfileItemModel> sorted = asc
? ProfileItems.OrderBy(KeySelector, comparer)
: ProfileItems.OrderByDescending(KeySelector, comparer);
var list = sorted.ToList();
ProfileItems.Clear();
ProfileItems.AddRange(list);
_dicHeaderSort[colName] = !asc;
//_dicHeaderSort.TryAdd(colName, true);
//_dicHeaderSort.TryGetValue(colName, out bool asc);
//if (await ConfigHandler.SortServers(_config, _config.SubIndexId, colName, asc) != 0)
//{
// return;
//}
//_dicHeaderSort[colName] = !asc;
//await RefreshServers();
return Task.CompletedTask; return Task.CompletedTask;
} }