 <p>OrderBy returns a new IEnumerable, so you need to do something like:</p> <pre><code>IEnumerable&lt;Data&gt; results = query.OrderBy(item =&gt; item.GetType().GetProperty(sortExpressions[i].Name)); </code></pre>