我的“产品表”包含以下字段
PID int,
product_name varchar(),
product_price 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));
}
现在出现问题,ProductID
为var
类型我无法将其与pid => pid.productid
进行比较。
我想要做的是首先通过在product_id
中将cart
(登录用户)与uid_id
进行比较,从user_id
表中获取用户的所有cart
表,然后显示product_id
表中product
个的产品详细信息。显然我需要存储多个product_id
,以便我可以在购物车页面上填充他们的数据。
答案 0 :(得分:0)
LINQ表达式db.cartDetails.Where(pid=>pid.productId==cart.productId && cart.user_id==session["user_ID"])
将返回cartDetails
而不是productId
的集合。您必须使用select
来获取所需的列,例如
var productIDs = db.cartDetails
.Where(pid => pid.productId == cart.productId && cart.user_id == session["user_ID"])
.Select(cd => cd.productId)
.ToList();
这会返回List
productIds
。 (如果您只希望获得一个productId,则可以使用SingleOrDefault
或FirstOrDefault
,具体取决于您的方案,例如db.cartDetails.SingleOrDefault(pid => ...).productId
)。
另请注意,如果您期望整数,则可以使用int
类型代替productId
而不是var
。现在,您将收集类型IQueryable<cardDetails>
分配给productId
。
接下来,您不能再对返回的List
使用等于运算符,您应该检查此列表是否包含来自productId
的{{1}},如下所示:
productDetails
无法测试此代码,但基本想法就在这里。
最后一点,考虑在两个表之间使用连接:https://msdn.microsoft.com/en-us/library/bb311040.aspx
答案 1 :(得分:0)
这是否现在我的购物车工作正常
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 0081dfc..8ec15c3 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -6676,6 +6676,9 @@ public final class ActivityManagerService extends ActivityManagerNative
Slog.w(TAG, "Failed trying to unstop package "
+ cpr.appInfo.packageName + ": " + e);
}
+ Slog.w(v, "startProcessLocked for cpi.processName = "+cpi.processName
+ +"::cpi.applicationInfo.packageName=" + cpi.applicationInfo.packageName
+ + " (Binder.getCallingPid()=" + Binder.getCallingPid());
ProcessRecord proc = startProcessLocked(cpi.processName,
cpr.appInfo, false, 0, "content provider",
@@ -6692,6 +6695,7 @@ public final class ActivityManagerService extends ActivityManagerNative
mLaunchingProviders.add(cpr);
} finally {
Binder.restoreCallingIdentity(origId);
+ Slog.w(TAG, "Binder.getCallingPid() after restoreCallingIdentity(). pid=" + Binder.getCallingPid());
}
}