【问题标题】:Unable to cast object of type 'System.Data.Linq.DataQuery`1[System.Int32]' to type 'System.IConvertible'无法将“System.Data.Linq.DataQuery`1[System.Int32]”类型的对象转换为“System.IConvertible”类型
【发布时间】:2017-07-03 21:53:42
【问题描述】:

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

产品
(产品 ID):1
(身份证号):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”

【问题讨论】:

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

标签: c# linq linq-to-sql


【解决方案1】:

您的查询:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2021-01-29
    • 2015-12-17
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多