title: How to create empty-conditional operator for collections similar to null-conditional operator?
body: <p>C# 6.0 introduced null-conditional operator, a big win.</p>
  
  <p>Now I would like to have an operator which behaves similarly to it, but for empty collections.</p>
  
  <pre><code>Region smallestFittingFreeRegion = FreeRegions
              .Where(region =&gt; region.Rect.W &gt;= width &amp;&amp; region.Rect.H &gt;= height)                
              .MinBy(region =&gt; (region.Rect.W - width) * (region.Rect.H - height));
  </code></pre>
  
  <p>Now this blows up if <code>Where</code> returns an empty <code>IEnumerable</code>, because <code>MinBy</code> (from <code>MoreLinq</code>) throws an exception if collection is empty.</p>
  
  <p>Before C# 6.0 this would probably be solved by adding another <em>extension method</em> <code>MinByOrDefault</code>.</p>
  
  <p>I would like to re-write it like this: <code>.Where(...)?.MinBy(...)</code>. But this doesn't work because <code>.Where</code> returns an <em>empty collection</em> instead of <code>null</code>.</p>
  
  <p>Now this could be solved by introducing a <code>.NullIfEmpty()</code> extension method for <code>IEnumerable</code>. Arriving at <code>.Where(...).NullIfEmpty()?.MinBy()</code>.</p>
  
  <p>Ultimately this seems awkward because returning <em>empty collection</em> has always been preferable to returning a <code>null</code>.</p>
  
  <p><strong>Is there an other more-elegant way to do this?</strong></p>