網頁

2012年10月2日 星期二

使用LINQ to Entities語法須注意轉型問題


筆者這兩天將以前使用ADO.NET寫的SQL語法改為LINQ to Entities語法時發現
不管是查詢或是新增資料時 
如果需要文字方塊輸入資料後轉換資料型別
必須事先將轉型後的資料存為int 或 string  or... etc.
否則會跳出錯誤......

假設筆者欲作一個查詢語法如下:
var sel = from p in 購書資料庫.購物車資料表
              where p.會員ID == memberid.Text && p.書籍ID == int.Parse(booksid.Text)
              select p;

則系統會跳出:
"LINQ to Entities 無法辨識方法 'Int32 Parse(System.String)' 方法,而且這個方法無法轉譯成存放區運算式。"

因此需事先將欲輸入的資料轉為對應的資料型別後,再進行查詢。
正確的語法如下:
int bkid = int.Parse(booksid.Text);

var sel = from p in 購書資料庫.購物車資料表
              where p.會員ID == memberid.Text && p.書籍ID == bkid
              select p;

注:補充一點,如要將資料轉為整數(int)時,可以用int.Parse() 或者是Convert.ToInt32()來實作

沒有留言:

張貼留言