2009-04-27 99 views
7

我试图将数据插入到我的数据库中有2台无法投类型的对象System.Data.Linq.DataQuery`1 [System.Int32]为键入“System.IConvertible”

产品
(产品ID):1
(IDNumber中):200900110
(产品名称):百事可乐

订单
(订单id):1(自动递增1)
(产品ID):1
(日期):1/1/2009年

的代码是这样的:

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]' to type'System.IConvertible'

+3

我希望没有人会介意 - 我已经修正了缩进以显示陈述更清楚的地方。 – 2009-04-27 06:27:28

回答

27

您的查询:

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实例。

相关问题