筆者這兩天將以前使用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()來實作
沒有留言:
張貼留言