title: Sum() causes exception instead of returning 0 when no rows
body: <p>I have this code (ok, I don't, but something similar :p)</p>
  
  <pre><code>    var dogs = Dogs.Select(ø =&gt; new Row
      {
              Name = ø.Name,
              WeightOfNiceCats = ø.Owner
                .Cats
                .Where(æ =&gt; !æ.Annoying)
                .Sum(æ =&gt; æ.Weight),
      });
  </code></pre>
  
  <p>Here I go through all dogs and sum up the weight (into a non-nullable decimal) of all not-annoying cats which has the same owner as the dog. Of course, pretty much all cats are annoying, so I get this error:</p>
  
  <blockquote>
    <p>The null value cannot be assigned to a member with type System.Decimal which is a non-nullable value type.</p>
  </blockquote>
  
  <p>None of the fields or foreign keys used can be null. So the error happens when the <code>Where</code> clause returns no cats, which it often does. But how can I solve this? I want it to return 0 when that happens. Tried with a <code>DefaultIfEmpty()</code> after the <code>Where</code> clause, but then I get this error:</p>
  
  <blockquote>
    <p>Object reference not set to an instance of an object.</p>
  </blockquote>
  
  <p>Which I guess is understandable. I tried to add a <code>??</code> after the <code>Sum</code>, but then it wont compile because of this error:</p>
  
  <blockquote>
    <p>Operator '??' cannot be applied to operands of type 'decimal' and 'decimal'</p>
  </blockquote>
  
  <p>Which also makes sense of course. So what can I do? Would be nice if the <code>Sum</code> thing just returned 0 when there was nothing to sum. Or a <code>SumOrZero</code> statement of some sort. Would it be difficult to make a <code>SumOrZero</code> method that worked with Linq2SQL?</p>