title: A different take on FirstOrDefault
body: <p>The IEnumerable extension method FirstOrDefault didn't exactly do as I wanted so I created FirstOrValue. Is this a good way to go about this or is there a better way?</p>
  
  <pre><code>public static T FirstOrValue&lt;T&gt;(this IEnumerable&lt;T&gt; source, Func&lt;T, bool&gt; predicate, T value)
  {
      T first = source.FirstOrDefault(predicate);
      return Equals(first, default(T)) ? value : first;
  }
  </code></pre>