2011-12-29 5 views
7

私は、クエリを持ってLINQの和とnullは

{21} 
{} 
{} 
{} 

問題があると思われることSum()戻りnullレコードが存在しない場合私はこれを回避する方法がわからないので、c.Plays + nullnullと同じですが、ちょうどc.Playsです。

答えて

16

あなたはint?を返さないことによって、これを修正するのではなく、直接intに変換することができます:この作品

.Sum(v => v.Plays ?? 0) 
+0

感謝を!なぜlinqとsqlの空のセットの合計がnullですか?空集合の合計は0になるはずですか? –

+1

@TomGullen * "' Sum() 'は、プレーンなLINQの空シーケンスの場合は常に0を返しますが、LINQ to SQLの欠点であると思われますが、合計した値自体がnullの場合そうでなければ、Sumの戻り値の型は* decimal?*)ではなく* decimal' *であることになります。 "* http://connect.microsoft.com/VisualStudio/feedback/details/360365/linq-sum-メソッド戻り値 – Rob

+0

@robjb列のどれもがNULL可能ですが、これはlinqからSQLへのバグですか? –

1
int response = 
    (from p in data.tbHoraires 
    where p.eid == eid && p.annee == annee && p.obligatoire == true 
    select (int?)p.nbminute ?? 0).Sum();