无法将类型为“System.Data.Linq.DataQuery`1[System.Int32]”的对象转换为类型“System.IConvertible”。

11
我正在尝试将数据插入到我的具有两个表的数据库中
产品 (ProductID): 1 (IDNumber):200900110 (ProductName):Pepsi
订单 (OrderID):1(自动增量1) (ProductID):1 (Date):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'


3
没关系,我已经修正了缩进,以更清晰地显示语句的位置。 - Jon Skeet
1个回答

33

您的查询:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接