私はこのコードを持っています(わかりました、私は持っていませんが、似たようなものです:p)
var dogs = Dogs.Select(ø => new Row
{
Name = ø.Name,
WeightOfNiceCats = ø.Owner
.Cats
.Where(æ => !æ.Annoying)
.Sum(æ => æ.Weight),
});
ここでは、すべての犬を調べて、犬と同じ飼い主を持つ迷惑ではないすべての猫の重みを (null 非許容の 10 進数に) 合計します。もちろん、ほとんどすべての猫は迷惑なので、次のエラーが表示されます。
Null 非許容値型である System.Decimal 型のメンバーに null 値を割り当てることはできません。
使用されるフィールドまたは外部キーはいずれも null にすることはできません。Where
そのため、句が猫を返さない場合にエラーが発生しますが、これはよくあることです。しかし、どうすればこれを解決できますか?そのときに0を返したい。句のDefaultIfEmpty()
後に試してみましたが、次のエラーが発生します。Where
オブジェクト参照がオブジェクト インスタンスに設定されていません。
これは理解できると思います。??
の後に a を追加しようとしましたSum
が、このエラーのためにコンパイルされません:
演算子「??」タイプ 'decimal' および 'decimal' のオペランドには適用できません
もちろん、これも理にかなっています。それで、なにかお手伝いできますか?Sum
合計するものが何もないときに 0 が返されたらいいですね。またはSumOrZero
ある種の声明。SumOrZero
Linq2SQL で動作するメソッドを作成するのは難しいでしょうか?