【问题标题】:how to convert var data to int type?如何将var数据转换为int类型?
【发布时间】:2015-11-04 17:57:24
【问题描述】:

我有包含以下字段的“产品表”
PID 整数,
产品名称 varchar(),
product_price int

带有以下字段的“购物车表”
购物车 ID
用户ID
PID

所以我想显示登录用户的购物车项目
例如,如果 user_ID=100 已登录,那么只有他的购物车商品应显示给他,以及所有产品详细信息。
我正在使用带有实体框架的 asp.net

 public ActionResult Cart()
    {
        Products pro = new Products();
        Cart cart =new Cart();

        var productID=db.cartDetails.Where(pid=>pid.productId==cart.productId && cart.user_id==session["user_ID"]);
        return View(db.productsDetails.Where(pid => pid.productId == productID));
    }

现在出现问题,“ProductID”是 var 类型,我无法将其与“pid=>pid.productid”进行比较。
如何将 productid 存储在 int 列表中,以便我可以将其与单个 productid 进行比较从产品表显示产品详细信息?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    检查前尝试转换

    var productID=int.Parse(db.cartDetails.Where(pid=>pid.productId==cart.productId).ProductId); 返回视图(db.productsDetails.Where(pid => pid.productId == productID));

    编辑 db.cartDetails.Where(pid=>pid.productId==cart.productId

    这将返回产品对象或其他东西,因此需要将您的代码更改为

     var product = db.cartDetails.Where(pid=>pid.productId==cart.productId).FirstOrDefault();
    if(product!= null){
      return View(db.productsDetails.Where(pid => pid.productId == product.productID));
    }
    

    【讨论】:

    • db.cartDetails.Where(pid=>pid.productId==cart.productId) 可以返回一个 int 吗?
    • 没有db.cartDetails.Where(pid=>pid.productId==cart.productId).ProductId 将返回
    • 那你认为为什么需要演员阵容?
    • 不,它不起作用,购物车页面上什么也没有显示,还有一件事,我需要 && 比较购物车中的每个产品与 user_ID ,以便仅列出登录用户的产品。但是这样做之后,我得到了空引用异常。 {var productID=db.cartDetails.Where(pid=>pid.productId==cart.productId && cart.user_id==session["user_ID"]); }
    【解决方案2】:
    db.cartDetails.Where(pid=>pid.productId==cart.productId) returns a `WhereListIterator<CartDetail>` object. 
    

    所以你需要做一些类似 -

    var productID=db.cartDetails.Where(pid=>pid.productId==cart.productId).FirstOrDefault();
    return View(db.productsDetails.Where(pid => pid.productId == productID.productID));
    

    【讨论】:

    • var productID=db.cartDetails.Where(pid=>pid.productId==cart.productId) 不会返回 CartDetails 对象。它将返回一个 CartDatail 对象的集合。
    • 我只是展示一个例子。无论如何更新。谢谢。
    • 不,它不起作用,在购物车页面上什么也没有显示,还有一件事,我需要 && 比较购物车中的每个产品与 user_ID ,以便仅列出登录用户的产品。但是这样做之后,我得到了空引用异常。 {var productID=db.cartDetails.Where(pid=>pid.productId==cart.productId && cart.user_id==session["user_ID"]); }
    • FirstOrDefault 之后你会得到什么?它可能是空的?
    • 这意味着没有与cart.productId 匹配的cartDetail。或者cart.user_id==session["user_ID"] 不是真的。检查session["user_ID"] 中是否有任何数据。
    【解决方案3】:

    你可以试试这个

    编辑:

    第一件事你不能直接将 session["user_ID"] 与 int 数据类型字段进行比较,就像你在评论 cart.user_id==session["user_ID"] 之后所做的那样更新代码。

    var userID = Convert.ToInt32(Session["user_ID"]); //And please check first session is null or not than go ahead.
    //Here as you said now you can compare productID and userId as follow.
    //And if these both conditions will be satisfied than you will get cartDetails table first record otherwise it will return null value
    var cartDetail = db.cartDetails.Where(pid => pid.productId == cart.productId && pid.user_id == userID).FirstOrDefault();
    if(cartDetail != Null)
    {
        return View(db.productsDetails.Where(pid => pid.productId == cartDetail.productID));
    }
    

    FirstOrDefault() 返回序列的第一个元素,如果序列不包含任何元素,则返回默认值。

    如果不为空,我的第一行代码会返回 intproductID。

    【讨论】:

    • 不,它不起作用,在购物车页面上什么也没有显示,还有一件事,我需要 && 比较购物车中的每个产品与 user_ID ,以便仅列出登录用户的产品。但是这样做之后,我得到了空引用异常。 {var productID=db.cartDetails.Where(pid=>pid.productId==cart.productId && cart.user_id==session["user_ID"]); }
    • 检查cart对象。
    • 是否会在购物车详情中存储 product_id 的集合,因为一位用户的购物车中将有多个产品?
    • 我要做的是首先通过比较uid_id(登录用户)和购物车表中的user_id,从“购物车表”中获取用户的所有product_id。 ,然后显示来自“产品表”的那些产品 ID 的产品详细信息。所以很明显我需要存储多个product_id,这样我就可以在购物车页面上填充他们的数据。
    猜你喜欢
    • 1970-01-01
    • 2020-10-22
    • 2016-06-25
    • 2016-03-12
    • 2016-03-20
    • 2020-06-24
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多