Here's a modified version of Nick Harrison's IOrderedQueryable extension method in his dynamic linq query post: static class IQueryableExtensions { public static IOrderedQueryable<TSource> GenericEvaluateOrderBy<TSource>( this IQueryable<TSource> query, string propertyName) { var type = typeof (TSource); var property = type.GetProperty(propertyName); var parameter = Expression.Parameter(type, "p" ); var propertyReference = Expression.Property(parameter, property); //p.ProductName var sortExpression = Expression.Call( typeof (Queryable), "OrderBy" , new Type[] { type, property.PropertyType }, query.Expression, Expression.Quote(Expression.Lambda(Expression.MakeMemberAccess(parameter, property), parameter))); return query.Provider.CreateQuery<TSource>(sortExpression) as IOrderedQueryable<TSource...