C# 无法强制转换类型为';System.Data.Linq.DataQuery`1[System.Int32]';输入';System.IConvertible';

C# 无法强制转换类型为';System.Data.Linq.DataQuery`1[System.Int32]';输入';System.IConvertible';,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我正在尝试将数据插入我的数据库,该数据库有两个表 产品 (ProductID):1 (IDNumber):200900110 (产品名称):百事可乐 订单 (订单ID):1(自动递增1) (ProductID):1 (日期):2009年1月1日 代码如下: var db = new ProductOrder(); var idNum = from p in db.Product where p.IDNumber == 200900110 sel

我正在尝试将数据插入我的数据库,该数据库有两个表

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

订单
(订单ID):1(自动递增1)
(ProductID):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()

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

我希望没有人介意-我已经修复了缩进,以更清楚地显示语句的位置。