From e7f04f55c202b9f3393e16b30dee0e3783674ca3 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sun, 8 Dec 2024 11:10:15 +0800 Subject: [PATCH] Remove QueryableExtension --- .../ServiceLib/Common/QueryableExtension.cs | 50 ---------- v2rayN/ServiceLib/Handler/ConfigHandler.cs | 93 +++++++++---------- 2 files changed, 45 insertions(+), 98 deletions(-) delete mode 100644 v2rayN/ServiceLib/Common/QueryableExtension.cs diff --git a/v2rayN/ServiceLib/Common/QueryableExtension.cs b/v2rayN/ServiceLib/Common/QueryableExtension.cs deleted file mode 100644 index b8e91433..00000000 --- a/v2rayN/ServiceLib/Common/QueryableExtension.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System.Linq.Expressions; -using System.Reflection; - -namespace ServiceLib.Common -{ - public static class QueryableExtension - { - public static IOrderedQueryable OrderBy(this IQueryable query, string propertyName) - { - return _OrderBy(query, propertyName, false); - } - - public static IOrderedQueryable OrderByDescending(this IQueryable query, string propertyName) - { - return _OrderBy(query, propertyName, true); - } - - private static IOrderedQueryable _OrderBy(IQueryable query, string propertyName, bool isDesc) - { - var methodname = (isDesc) ? "OrderByDescendingInternal" : "OrderByInternal"; - - var memberProp = typeof(T).GetProperty(propertyName); - - var method = typeof(QueryableExtension).GetMethod(methodname) - .MakeGenericMethod(typeof(T), memberProp.PropertyType); - - return (IOrderedQueryable)method.Invoke(null, new object[] { query, memberProp }); - } - - public static IOrderedQueryable OrderByInternal(IQueryable query, PropertyInfo memberProperty) - {//public - return query.OrderBy(_GetLambda(memberProperty)); - } - - public static IOrderedQueryable OrderByDescendingInternal(IQueryable query, PropertyInfo memberProperty) - {//public - return query.OrderByDescending(_GetLambda(memberProperty)); - } - - private static Expression> _GetLambda(PropertyInfo memberProperty) - { - if (memberProperty.PropertyType != typeof(TProp)) throw new Exception(); - - var thisArg = Expression.Parameter(typeof(T)); - var lambda = Expression.Lambda>(Expression.Property(thisArg, memberProperty), thisArg); - - return lambda; - } - } -} \ No newline at end of file diff --git a/v2rayN/ServiceLib/Handler/ConfigHandler.cs b/v2rayN/ServiceLib/Handler/ConfigHandler.cs index 39d6cb1c..2424db49 100644 --- a/v2rayN/ServiceLib/Handler/ConfigHandler.cs +++ b/v2rayN/ServiceLib/Handler/ConfigHandler.cs @@ -766,69 +766,66 @@ namespace ServiceLib.Handler }).ToList(); Enum.TryParse(colName, true, out EServerColName name); - var propertyName = string.Empty; - switch (name) - { - case EServerColName.ConfigType: - case EServerColName.Remarks: - case EServerColName.Address: - case EServerColName.Port: - case EServerColName.Network: - case EServerColName.StreamSecurity: - propertyName = name.ToString(); - break; - - case EServerColName.DelayVal: - propertyName = "Delay"; - break; - - case EServerColName.SpeedVal: - propertyName = "Speed"; - break; - - case EServerColName.SubRemarks: - propertyName = "Subid"; - break; - - default: - return -1; - } - - var items = lstProfile.AsQueryable(); if (asc) { - lstProfile = items.OrderBy(propertyName).ToList(); + lstProfile = name switch + { + EServerColName.ConfigType => lstProfile.OrderBy(t => t.ConfigType).ToList(), + EServerColName.Remarks => lstProfile.OrderBy(t => t.Remarks).ToList(), + EServerColName.Address => lstProfile.OrderBy(t => t.Address).ToList(), + EServerColName.Port => lstProfile.OrderBy(t => t.Port).ToList(), + EServerColName.Network => lstProfile.OrderBy(t => t.Network).ToList(), + EServerColName.StreamSecurity => lstProfile.OrderBy(t => t.StreamSecurity).ToList(), + EServerColName.DelayVal => lstProfile.OrderBy(t => t.Delay).ToList(), + EServerColName.SpeedVal => lstProfile.OrderBy(t => t.Speed).ToList(), + EServerColName.SubRemarks => lstProfile.OrderBy(t => t.Subid).ToList(), + _ => lstProfile + }; } else { - lstProfile = items.OrderByDescending(propertyName).ToList(); + lstProfile = name switch + { + EServerColName.ConfigType => lstProfile.OrderByDescending(t => t.ConfigType).ToList(), + EServerColName.Remarks => lstProfile.OrderByDescending(t => t.Remarks).ToList(), + EServerColName.Address => lstProfile.OrderByDescending(t => t.Address).ToList(), + EServerColName.Port => lstProfile.OrderByDescending(t => t.Port).ToList(), + EServerColName.Network => lstProfile.OrderByDescending(t => t.Network).ToList(), + EServerColName.StreamSecurity => lstProfile.OrderByDescending(t => t.StreamSecurity).ToList(), + EServerColName.DelayVal => lstProfile.OrderByDescending(t => t.Delay).ToList(), + EServerColName.SpeedVal => lstProfile.OrderByDescending(t => t.Speed).ToList(), + EServerColName.SubRemarks => lstProfile.OrderByDescending(t => t.Subid).ToList(), + _ => lstProfile + }; } - for (int i = 0; i < lstProfile.Count; i++) + + for (var i = 0; i < lstProfile.Count; i++) { ProfileExHandler.Instance.SetSort(lstProfile[i].IndexId, (i + 1) * 10); } - if (name == EServerColName.DelayVal) + switch (name) { - var maxSort = lstProfile.Max(t => t.Sort) + 10; - foreach (var item in lstProfile) - { - if (item.Delay <= 0) + case EServerColName.DelayVal: { - ProfileExHandler.Instance.SetSort(item.IndexId, maxSort); + var maxSort = lstProfile.Max(t => t.Sort) + 10; + foreach (var item in lstProfile.Where(item => item.Delay <= 0)) + { + ProfileExHandler.Instance.SetSort(item.IndexId, maxSort); + } + + break; } - } - } - if (name == EServerColName.SpeedVal) - { - var maxSort = lstProfile.Max(t => t.Sort) + 10; - foreach (var item in lstProfile) - { - if (item.Speed <= 0) + case EServerColName.SpeedVal: { - ProfileExHandler.Instance.SetSort(item.IndexId, maxSort); + var maxSort = lstProfile.Max(t => t.Sort) + 10; + foreach (var item in lstProfile.Where(item => item.Speed <= 0)) + { + ProfileExHandler.Instance.SetSort(item.IndexId, maxSort); + } + + break; } - } } return 0;