私はこのコードを持っていないときに0を返すの例外が発生する(OK、私はしませんが、似たような:P)ここで合計は()の代わりに行が
var dogs = Dogs.Select(ø => new Row
{
Name = ø.Name,
WeightOfNiceCats = ø.Owner
.Cats
.Where(æ => !æ.Annoying)
.Sum(æ => æ.Weight),
});
は、私はすべての犬を通過し、総括犬と同じ所有者を持つすべての非厄介な猫の体重(非ヌル値の10進数に)。もちろん、ほとんどすべての猫は迷惑しているので、私はこのエラーを取得する:使用されるフィールドまたは外部キーの
The null value cannot be assigned to a member with type System.Decimal which is a non-nullable value type.
なしがnullになることはできません。したがって、エラーは、Where
節が猫を返さない場合に起こります。しかし、どうすればこの問題を解決できますか?私はそれが起こったときに0を返すようにしたい。 Where
句の後DefaultIfEmpty()
てみましたが、その後、私はこのエラーを取得する:私は理解しやすいと思い
Object reference not set to an instance of an object.
。私はSum
後??
を追加しようとしましたが、それは文句を言わないこのエラーのためコンパイル:
Operator '??' cannot be applied to operands of type 'decimal' and 'decimal'
も当然の理にかなって。じゃあどうすればいい?合計するものがないときにSum
のものが0を返しただけでいいですか?またはSumOrZero
なんらかのステートメント。 Linq2SQLと連携してSumOrZero
メソッドを作成するのは難しいですか?
大きな質問です。この現象はMSDNに記載されていないように思われます。 – Mykroft