无法将类型为’System.Data.Linq.DataQuery`1 ‘的对象强制转换为’System.IConvertible’

我正在尝试将数据插入到包含2个表的数据库中

制品
(ProductID):1
(IDNumber):200900110
(产品名称):百事可乐

订购
(OrderID):1(自动递增1)
(产品ID):1
(日期):2009年1月1日

代码是这样的:

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

运行后它给我这样的错误:

无法将类型为’System.Data.Linq.DataQuery`1 [System.Int32]’的对象强制转换为’System.IConvertible’

您的查询:

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

不返回单个结果,而是返回结果列表。 在您的情况下,这将是一个包含单个产品ID的列表。 您应该将其修改为:

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

如果您在调试器中运行代码并将鼠标hover在idNum变量上,您将看到它是一个DataQuery实例。