[英]How to compare object in foreach loop?
我目前正在檢查購物車中的物品。 該物品可以多次兌換,但僅限於一定數量。 每個項目都有一個屬性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不同。
例
購物車中的物品
因此它將拋出結果。
有什么幫助嗎? 謝謝。
我會做類似(偽代碼)的事情:
var dict = new Dictionary<string /*item_Id*/, int /*count*/>;
// count redemptions for each id
foreach(var item in cart)
{
if(dict.ContainsKey(item.Id))
dict[item.Id]++;
else
dict.Add(item.Id, 1);
}
// check if any of them violate the allowed maximum
foreach( var itemId in dict.Keys)
{
if(dict[itemId ] > GetMaxRedeemCount(itemId))
{
result.Invalidate(...);
// you may want to break here...
// break;
}
}
試試這個解決方案;
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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.