在使用linq的時候,我們總會用到sum() 求和方法。
比如:
//db 是數據庫上下文 // 求table表中名字=xxx的付款金額 decimal total = db.Tables.Where(a=>a.Name=="xxx").Sum(a=>a.Payment);
這時候,如果數據庫中沒有這個人的記錄,則會報出異常 invalidoperationexception:不能將 Null 值賦給類型為 System.Decimal (不可為 null 的值類型)的成員。
產生原因是,數據庫查詢得到的結果是null,無法將null 賦值給Decima 類型的變量 totla.
解決方法是:
decimal total = db.Tables.Where(a=>a.Name=="xxx").ToList().Sum(a=>a.Payment);
先ToList(),再求和。因為在tolist的時候 會把null 轉化為0,所以最后total=0.
學習學習...
