[asp.net]减去数量使用实体模型

发布时间: 2017/3/26 1:48:35
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图减去表"库存"从列表中数量的字段"QtyOnHand"。但我会出现此错误︰

无法将对象强制转换类型的 ' System.Collections.Generic.List'1[System.Int32]' 来键入 'System.IConvertible'。

它显示了在发生错误︰

var cartQty = (从我的项目在哪里 i.ProductId = = Convert.ToInt32(productId) 选择 i.Qty)。SingleOrDefault();

我的代码如下︰

protected void btnCheckout_Click(object sender, EventArgs e)
    {
        int inventoryQty;

        List<Item> items = Session["Cart"] as List<Item>;

        using (ProjectEntities myEntities = new ProjectEntities())
        {
            var productId = (from i in items select i.ProductId).ToList();

            var cartQty = (from i in items where i.ProductId == Convert.ToInt32(productId) select i.Qty).SingleOrDefault();

            var inventory = (from q in myEntities.Inventories
                            where q.ProductId == Convert.ToInt32(productId)
                            select q).SingleOrDefault();

            inventoryQty = inventory.QtyOnHand - cartQty;

            myEntities.SaveChanges();
            Response.Redirect("~/Home.aspx");
        }
    }

在此先感谢 !

解决方法 1:

var productId = (从 i 在项目选择 i.ProductId)。Tolist ();

productId变量包含的项的列表和您试图将其传递给 Convert.ToInt32 方法,并不期望的项的集合 !这造成这一问题。

既然你是购物车可能有多个项目,你可能需要循环通过 productIds 和做你其他的计算。

var productIdList = (from i in items select i.ProductId).ToList();
foreach(var productId in productIdList)
{
   var cartQty = (from i in items where i.ProductId ==  Convert.ToInt32(productId) 
                                                        select i.Qty).SingleOrDefault();
  // Your remaining code
} 

我假设在您的购物车项目产品 id 数字值,而是字符串类型。然后仅 Convert.ToInt32 将工作因为它期待一些有效的数字值的字符串表示形式 ( Ex :"234" )

如果它是 int 类型的你不需要 Convert.ToInt32(productId) 部分在你哪里子句,只需使用i.ProductId==productId

赞助商