 <p>If you sometimes need an expression and sometimes need a delegate, you have 2 options:</p> <ul> <li>have different methods (1 for each)</li> <li>always accept the <code>Expression&lt;...&gt;</code> version, and just <code>.Compile().Invoke(...)</code> it if you want a delegate. Obviously this has cost.</li> </ul>