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

时间:2009-04-27 06:18:23

标签: c# linq linq-to-sql

我正在尝试将数据插入到我的数据库中,该数据库有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'

1 个答案:

答案 0 :(得分:29)

您的查询:

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

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