When to use Lazy vs Func
<p>I have multiple boolean statements being evaluated. They are evaluated in order from top to bottom. Some boolean statements are expensive to evaluate so I am use lazy on them. Here is the sample code:</p>

<pre><code>bool contactHasPermission = ContactHasPermission(id);
var contactIsInRole = new Lazy&lt;bool&gt;(() =&gt; IsContactInRole(contactId, roleType)); //Database call
var contactHasAtLeastXPoints = new Lazy&lt;bool&gt;(() =&gt; ContactHasXPoints(contactId, 100)); //database call

bool permit = contactHasPermission || contactIsInRole.Value || contactHasAtLeastXPoints.Value;
</code></pre>

<p>As you can see the most expensive statements are in lazy objects. I could have done the same thing using Func. What the the pros and cons of using one over the other?</p>