Почему расширение Linq OrderBy не влияет на список, для которого оно вызывается?

Я пытаюсь написать общий метод расширения сортировки для List на основе имени строкового столбца и linq.

У меня здесь большая часть этого метода, но он пока не работает. Логика взята с этого сайта .

public static List Sort(this List 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>(Expression.Property(param, sortColumn), param);
    list = list.AsQueryable().OrderBy(sortExpression).ToList();

    return list;
}

Проходя через этот код, я вижу, что список отсортирован правильно, но когда он возвращается, он не влияет на список, который я передал. Я предполагаю, что AsQueryable или OrderBy создает новый объект в памяти, и я больше не указываю на ту же ссылку. Есть ли у кого-нибудь советы о том, как заставить эту работу работать должным образом или, кроме того, другое решение? Спасибо!

8
задан Dave Zych 28 February 2014 в 20:05
поделиться