我正在检查购物车中的商品。该物品可以多次兑换,但仅限于一定数量。每个项目都有一个属性redeem_count,用于存储可以兑换的时间。所以,下面是我的代码,用于检查兑换的每件商品的总数。
var previousCoupon = "";
var currentCoupon = "";
int count = 0;
foreach (var p in cart.Promotions)
{
var query = db.wmp_mst_mcp_promo
.Where(a => a.wmp_mcp_promo_id == p.PromotionId)
.Where(a => a.wmp_redeem_count != null && a.wmp_redeem_count > 0)
.SingleOrDefault();
if (query != null)
{
currentCoupon = query.wmp_mcp_promo_id;
if (previousCoupon == currentCoupon)
count++;
else
count = 0;
previousCoupon = currentCoupon;
if (count > query.wmp_redeem_count)
result.Invalidate(string.Format("You are not allowed to redeem more than {0} \"{1}\" voucher in 1 order", query.wmp_redeem_count, query.wmp_descriptions));
正如您所看到的,编码有效但只有在按顺序兑换相同的项目时才有效。这可能无效,因为并非所有客户都会按顺序兑换商品。如果他们兑换例如项目A,然后是项目B,然后再次项目A,则会发生错误。它仅适用于项目A,项目A和项目B。
被修改
我想存储任何具有相同ID的项目,并且只获取其中一个属性redeem_count,以便我可以对其执行if语句。每个项目的redeem_count都不同。
示例
购物车中的商品
所以它会抛出result.Invalidate
有任何帮助吗?感谢。
答案 0 :(得分:2)
我会做类似(伪代码)的事情:
for (int i = 0; i < jsonarray.length(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
jsonobject = jsonarray.getJSONObject(i);
// Retrive JSON Objects
map.put("id", jsonobject.getString("id"));
map.put("name", jsonobject.getString("name"));
map.put("image", jsonobject.getString("image"));
// Set the JSON Objects into the array
arraylist.add(map);
}
答案 1 :(得分:0)
试试这个解决方案;
var previousCoupon = "";
var currentCoupon = "";
int count = 0;
foreach (var p in cart.Promotions)
{
var query = db.wmp_mst_mcp_promo
.Where(a => a.wmp_mcp_promo_id == p.PromotionId)
.Where(a => a.wmp_redeem_count != null && a.wmp_redeem_count > 0);
if (query != null)
{
foreach(var queryItems in query)
{
currentCoupon = query.wmp_mcp_promo_id;
if (previousCoupon == currentCoupon)
count++;
else
count = 0;
previousCoupon = currentCoupon;
}
}
if (count > query.wmp_redeem_count)
result.Invalidate(string.Format("You are not allowed to redeem more than {0} \"{1}\" voucher in 1 order", query.wmp_redeem_count, query.wmp_descriptions));