2015-11-04 307 views
0

我有 「的產品表中」 具有以下字段
PID INT,
PRODUCT_NAME VARCHAR(),
PRODUCT_PRICE INT
如何將var數據轉換爲int類型?

「車表」 具有以下字段
cart_ID
user_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)); 
    } 

現在出現問題,「產品ID」是變種型我不能把它與「PID => pid.productid」比較。
如何在int列表中存儲productid,以便我可以將其與產品表中的單個productid進行比較以顯示產品詳細信息?

回答

0

嘗試檢查之前將其轉換

VAR =的productID int.Parse(db.cartDetails.Where(PID => pid.productId == cart.productId).ProductId); return View(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)); 
} 
+1

can'db.cartDetails.Where(pid => pid.productId == cart.productId)'return a int? –

+0

no'db.cartDetails.Where(pid => pid.productId == cart.productId)。ProductId'將返回 – Gayan

+0

在那種情況下,您爲什麼認爲演員是需要的? –

0
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)); 
+2

var productID = db.cartDetails.Where(pid => pid.productId == cart.productId)不會返回CartDetails對象。它將返回CartDatail對象的集合。 – 2015-11-04 06:24:12

+0

我只是展示了一個例子。反正更新了。謝謝。 –

+0

不,它不工作,在購物車頁面上沒有顯示任何內容, 還有一件事,我需要&&將購物車中的每個產品與user_ID進行比較,以便只有登錄的用戶產品才能列出。 但這樣做後,我得到空引用異常。 {var productID = db.cartDetails.Where(pid => pid.productId == cart.productId && cart.user_id == session [「user_ID」]); } –

0

你可以試試這個

編輯:

第一件事,你不能直接比較會話[「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()如果序列不包含任何元素返回序列的第一個元素,或默認值。

我的第一行代碼會返回您int productID(如果它不爲null)。

+0

不,它不工作,在購物車頁面上沒有顯示任何內容, 還有一件事,我需要&&將購物車中的每個產品與user_ID進行比較,以便只有登錄的用戶產品才能列出。 但這樣做後,我得到空引用異常。 {var productID = db.cartDetails.Where(pid => pid.productId == cart.productId && cart.user_id == session [「user_ID」]); } –

+0

檢查'購物車'的方向。 –

+0

@mayankbisht檢查更新後的代碼 –

相關問題