2009-04-27 27 views
7

Tôi đang cố gắng để chèn dữ liệu vào cơ sở dữ liệu của tôi trong đó có 2 bảngKhông thể cast đối tượng của loại 'System.Data.Linq.DataQuery`1 [System.Int32]' gõ 'System.IConvertible'

Sản phẩm
(ProductID): 1
(idnumber): 200.900.110
(ProductName): Pepsi

tự
(OrderID): 1 (Auto Increment 1)
(ProductID): 1
(Ngày): 1/1/2009

Mã này là thế này:

var db = new ProductOrder(); 
var idNum = from p in db.Product 
      where p.IDNumber == 200900110 
      select p.ProductID; 

var order = new Order(); 
      order.productID = Convert.ToInt32(idNum); 
      order.Date = DateTime.Now; 
db.Order.InsertOnSubmit(nTime); 
db.SubmitChanges(); 

Sau khi tôi chạy nó mang lại cho tôi những lỗi như thế này:

Không thể cast đối tượng kiểu 'System.Data.Linq.DataQuery `1 [System.Int32] ' để nhập' System.IConvertible '

+3

Tôi hy vọng không có ai quan tâm - Tôi đã cố định thụt đầu dòng để hiển thị nơi các câu lệnh rõ ràng hơn. –

Trả lời

27

Truy vấn của bạn:

from p in db.Product 
where p.IDNumber == 200900110 
select p.ProductID 

không trả về một kết quả duy nhất mà là danh sách kết quả. Trong trường hợp của bạn, đây sẽ là danh sách chứa một id sản phẩm duy nhất. Bạn nên sửa đổi nó như thế này:

(from p in db.Product 
where p.IDNumber == 200900110 
select p.ProductID).Single() 

Nếu bạn chạy mã của bạn trong trình gỡ lỗi và bạn di chuột qua biến idNum, bạn sẽ thấy rằng nó là một trường hợp DataQuery.

Các vấn đề liên quan