Измените это:
if("SN" == sortColumn) var sortresult = result.OrderBy(c => c.SN).ToList<miniCompletion>(); else if("PlayTime" == Date) var sortresult = result.OrderBy(c => c.PlayTime).ToList<miniCompletion>(); else if("PlayTime" == sortColumn) var sortresult = result.OrderBy(c => c.PlayTime).ToList<miniCompletion>(); else if("Score" == sortColumn) var sortresult = result.OrderBy(c => c.Score).ToList<miniCompletion>();
С перечислениями для asc, desc и sortColumn, например:
If(SortComun.SN == sortColumn)
Сравнение Int быстрее, а перечисления чище.Кроме того, вы можете попробовать result.AsParallel (). OrderBy (), если у вас слишком много регистров.
Что касается вашего второго подхода, попробуйте:
var sortResult = result.OrderBy(c => c.GetType().GetProperty(sortColumn).GetValue(c)).ToList();
Вы можете проверить, какой подход вам подходитлучше.Если рефлексия является самым общим ответом, другой может быть быстрее в интенсивной среде.
Если вы тестируете и делитесь своими результатами, результат может быть потрясающим.