Ordenar lista usando reflexão

Tenho uma tabela e desejo fazer a função de classificação para cada colun

classificação tem duas direções asc e des

1) Como posso classificar colunas usando reflexã

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

2) Também quero fazer algo que eu posso chamar de cadeia de operadores 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();

    }

questionAnswers(3)

yourAnswerToTheQuestion