You should be able to construct an Expression from that property name and pass that to OrderBy:
public IEnumerable<MyData> orderByDynamic(IEnumerable<MyData> objects, string propertyName)
{
var parameterExpression = Expression.Parameter(typeof(MyData), "x");
var orderByExpression = Expression.Lambda<Func<MyData, TypeOfProperty>>(
Expression.Property(parameterExpression, propertyName),
parameterExpression);
return objects.OrderBy(orderByExpression)
}
The problem is that you need to know the type of the property at compile time for this to work.