Question: Pretty short, I'm not really sure if possible, plus I can't find an example.

```
void Order<T>(List<T> lista)
{
    // get all properties, T is always a class
    List<PropertyInfo> props = typeof(T).GetProperties().ToList();

    // just order by one property, let's say: props[0]
    List<T> oList = lista.OrderBy( /* props[0] */ );
}

```

Just want the new ordered list.

Answer: 
Using the code from [this Blog](http://www.daedtech.com/linq-order-by-when-you-have-property-name) results in the following [Extension Method](http://msdn.microsoft.com/en-US/en-en/library/bb383977.aspx):

```
public static IEnumerable<T> OrderBy<T>(this IEnumerable<T> entities, string propertyName)
{
    if (!entities.Any() || string.IsNullOrEmpty(propertyName))
        return entities;

    var propertyInfo = entities.First().GetType().GetProperty(propertyName, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
    return entities.OrderBy(e => propertyInfo.GetValue(e, null));
}

```

Now you can just do the following:

```
lista.OrderBy(props[0].Name).ToList();

```
I think this should work (if the property array is not empty)

```
List<T> oList = lista.OrderBy(item => props[0].GetValue(item)).ToList();

```

On Mono, there's no overload of GetValue that takes a single argument.

```
List<T> oList = lista.OrderBy(item => props[0].GetValue(item, null)).ToList();

```