ordenação dinâmica em linq

por favor considere este cenário:

Eu tenho uma lista de uma classe com cerca de 50 campos.Eu quero ter um Combobox que o usuário pode selecionar de acordo com o que a lista de campo irá classificar.Por exemplo, se o usuário selecionar "F1" lista classificar de acordo com "F1".

Eu não quero classificar comif-else para todos os campos.Vejo este tópico:

Classificando um gridview ao vincular uma coleção ou lista de objetos

mas não posso usar sua resposta. Como eu posso usarExpression Tree para este fim?

obrigado

Editar 1) :

De acordo com a querida resposta do @Thom Smith, eu escrevi este código:

 using (NorthwindModel1.NorthwindEntities2 ent = new NorthwindModel1.NorthwindEntities2())
    {
        var query = from o in ent.Orders
                    where o.OrderID < 10257
                    select o;

        query.OrderBy("CustomerID", SortDirection.Ascending);

        GridView1.DataSource = query;
        GridView1.DataBind();
    }

mas não foi classificado. se eu escrevesse esse código desta maneira:

GridView1.DataSource = query.OrderBy(o=>o.CustomerID);

sendo tipo. Onde está o problema?