Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to cast object of type 'System.Data.Linq.DataQuery`1[System.Int32]' to type 'System.IConvertible'

I'm trying to insert the data into my database which has 2 tables

Products
(ProductID): 1
(IDNumber) : 200900110
(ProductName) : Pepsi

Order
(OrderID): 1 (Auto Increment by 1)
(ProductID):1
(Date): 1/1/2009

The code is this:

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();

After I run it gives me the error like this:

Unable to cast object of type 'System.Data.Linq.DataQuery`1[System.Int32]' to type 'System.IConvertible'

like image 823
Vicheanak Avatar asked Apr 27 '09 06:04

Vicheanak


1 Answers

Your query:

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

does not return a single result but a list of results. In your case this will be a list containing a single product id. You should modify it to this:

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

If you run your code in the debugger and you hover your mouse over the idNum variable, you'll see that it is a DataQuery instance.

like image 153
Ronald Wildenberg Avatar answered Oct 05 '22 23:10

Ronald Wildenberg