基本的に次のクエリを実行すると、一致するリードがない場合、次のクエリは例外をスローします。その場合、例外がスローされるのではなく、合計が0になるようにします。これはクエリ自体で可能でしょうquery.Any()
か?クエリを保存してチェックするのではなく?
double earnings = db.Leads.Where(l => l.Date.Day == date.Day
&& l.Date.Month == date.Month
&& l.Date.Year == date.Year
&& l.Property.Type == ProtectedPropertyType.Password
&& l.Property.PropertyId == PropertyId).Sum(l => l.Amount);
例外は何ですか?
—
Toto
例外が発生します:実体化された値がnullであるため、値タイプ 'Int32'へのキャストが失敗しました。結果の型のジェネリックパラメーターまたはクエリでは、null許容型を使用する必要があります。
—
John Mayer
@Stijn、あなたがやったことはまだうまくいかなかったでしょう。問題は、
—
Mike Perrenoud 2013
SQL
生成方法です。Amount
は実際null
にはありません。ゼロの結果を処理する方法を取り巻く問題です。提供された答えを見てください。
ドルの金額にdoubleを使用するべきではありません!ほんの少しの金額です。正確な量が意図されている場合は、決してdoubleを使用しないでください。データベースの列はである必要が
—
ErikE、2015年
decimal
あり、コードではを使用する必要がありますdecimal
。あなたは知っていたの忘れてfloat
とdouble
一日の誰かが統計やスター輝度や電子の確率過程または電荷の結果のために、それらを使用することを示していますまで、あなたのプログラミングのキャリアの中で!それまでは、あなたはそれを間違っています。
Where
返却されないnull
、それはすべてのレコードを見つけられませんでした場合、それはゼロ項目のリストを返します。例外は何ですか?