Сортировка в LINQ to SQL
Вот рабочий класс, который я уже использовал
http://aonnull.blogspot.com/2010/08/dynamic-sql-like-linq-orderby-extension.html

LINQ запрос выполняется непосредственно на этапе его использования (ToList(), foreach, etc.), а не на этапе формирования.
как вариант можно воспользоваться рефлекшеном, правда надо будет еще подумать над оптимизацией. рефлекшен штука не быстрая.

List<Person> list = new List<Person>();
list.Add(new Person() { Age = 20, Name="Вася"});
list.Add(new Person() { Age = 21, Name = "Петя" });
list.Add(new Person() { Age = 23, Name = "Коля" });
list.Add(new Person() { Age = 18, Name = "Саша" });

PropertyInfo pi = new Person().GetType().GetProperty("Name");
            
List<Person> sorted = list.OrderBy(p=> pi.GetValue(p, null)).ToList();
