В настоящее время я делаю проверку товара в корзине. Элемент может быть выкуплен несколько раз, но ограничен определенным числом. Каждый элемент имеет атрибут redeem_count, который хранит количество времени, которое может быть выкуплено. Итак, ниже приведена моя кодировка для проверки общего количества выкупленных предметов.Как сравнить объект в цикле foreach?
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 снова. Она будет работать только если пункт А, пункт А, затем пункт B.
Отредактировано
Я хочу, чтобы хранить любой элемент, которые имеют одинаковый идентификатор и получить только один из его атрибутов redeem_count, так что я могу сделать, если заявление в теме. Значение redeem_count отличается для каждого элемента.
Пример
товара в корзине
- пункт А - 2 (redeem_count = 2) Действительно
- пункт Б - 2 (redeem_count = 1) Недопустимый
- пункт C - 3 (redeem_count = 4) Действительно
Так что отбросит result.Invalidate
Любая помощь? Благодарю.
@wkl жаль. я обманул его. – Farid
Я бы перебрал все рекламные акции, проверьте, находится ли идентификатор внутри HashSet. Если это увеличение redeem_count, если оно не добавляет этот идентификатор в HashSet. Это будет то, что вы хотите? – Mats391
@ Mats391 Привет. На самом деле я хочу сравнить идентификатор каждого элемента, и если он совпадает с другим элементом, счетчик для этого объекта будет увеличиваться. Но только счет для этого предмета увеличивается. Пример, если элемент A встречается дважды, поэтому счетчик для элемента A становится 2, а если элемент B равен 3, счетчик для элемента B также становится 3. – Farid