Я пытаюсь написать общий метод расширения сортировки в List на основе имени столбца строки и linq.
У меня большая часть здесь, но она пока не работает. Логика взята с с этого сайта .
public static List<T> Sort<T>(this List<T> list, string sortColumn, string sortOrder)
{
if (string.IsNullOrWhiteSpace(sortColumn))
return list;
int order = sortOrder == "desc" ? -1 : 1;
var param = Expression.Parameter(typeof(T), "x");
var sortExpression = Expression.Lambda<Func<T, object>>(Expression.Property(param, sortColumn), param);
list = list.AsQueryable().OrderBy(sortExpression).ToList();
return list;
}
Пошагово просматривая этот код, я вижу, что список отсортирован правильно, но при возврате он не влияет на список, который я передал. Я предполагаю, что AsQueryable или OrderBy создают новый объект в памяти, и я больше не указывая на ту же ссылку. У кого-нибудь есть какие-то советы о том, как заставить это работать должным образом, или как это можно сделать, другое решение? Спасибо!