Динамический LINQ

я есть таблица, и я хочу сделать функцию сортировки для каждого столбца.

Сортировка имеет два направления asc и desc.

1) Как я могу сортировать столбцы, используя отражение?

List<Person> GetSortedList(List<Person> persons, string direction, string column)
{
    return persons.OrderBy(x => GetProperyByName(x, column)); //GetPropertyByName - ??
}

2) Также я хочу сделать то, что я могу назвать цепочкой операторов linq:

 List<Person> GetSortedList(List<Person> persons, string direction, string column)
    {
         var linqChain;

         if(direction=="up")
         {
             linqChain+=persons.OrderBy(x => GetProperyByName(x, column))
         }
         else
         {
             linqChain+=persons.OrderByDescending(x => GetProperyByName(x, column))
         }

         linqChain+=.Where(....);

         return linqChain.Execute();

    }

Ответы на вопрос(3)

Ваш ответ на вопрос