星期四, 6月 19, 2008

Linq to SQL使用sum,mix,min指令遇到empty table

先看一段簡單的原始碼..

int aaa = db.Products.Where(a => a.ProductID == 9999999).Max(a => a.ProductID);
Response.Write(aaa);

會跑出這錯誤..

The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type.

這個問題..就是如果用sum,mix,min的時候..如果資料庫傳回來是empty table那會傳回上面那行錯誤..這要怎麼解決ㄋ..google一下..如果我們把程式碼改成..

int? aaa = db.Products.Where(a => a.ProductID == 9999999).Max(a => (int?)a.ProductID);
Response.Write(aaa.HasValue ? aaa.Value : 0);

這樣就可以解決了..Big Grin..不過我是比較懶..我都是這樣寫..

int aaa = db.Products.Where(a => a.ProductID == 9999999).Max(a => (int?)a.ProductID) ?? 0;
Response.Write(aaa);

這樣快多了..^^||..參考一下ㄅ..

參考:

沒有留言: