PDA

View Full Version : سوال: حذف چند آیتم از session



majid784
سه شنبه 13 دی 1390, 12:08 عصر
سلام دوستان من میخوام چند آیتم از session رو حذف کنم که مثلاً key اونا با Item شروع میشه وقتی تو حلقه foreach میزارم error زیر رو میده
Collection was modified after the enumerator was instantiated
چیکار باید بکنم؟

کدم اینه :


foreach (string text in Session.Keys)
{
if (text.Contains("Item"))
{
Session.Remove(text);
}
}

alonemm
سه شنبه 13 دی 1390, 14:36 عصر
باسلام :
دوست من کد رو ست کردن سشن رو بزارید و بگید کامل میخواد چه عملیاتی انجام بدید تا بهتر راهنمایی کنم.

majid784
چهارشنبه 14 دی 1390, 11:01 صبح
ببینید این قسمت مربوط به سبد خریده. به ازای هر آیتمی که توی سبد خرید هست عنصری در session قرار داده میشه که key اون از ترکیب رشته "Item" و شماره اون آیتم به دست میاد به فرض
session["Item2"] . پس مثلا برای آیتمی که id اون ItemID باشه و value مربوط به اون مثلا رشته ای به نام ItemValue باشه دستور set کردن به شکل زیر میشه


Session["Item" + ItemID.ToString()] = ItemValue;


حالا مشکل من اینه که وقتی میخوام این آیتم ها رو از سبد خرید پاک کنم وقتی دستور رو به شکلی که در پست قبلی نوشتم مینویسم (یعنی منظورم اینه که همه عناصری از session که key اونها دارای کلمه Item هست رو پاک کن) error ای که گفتم رو میده.

raziee
چهارشنبه 14 دی 1390, 16:31 عصر
با سلام.
شما در یک حلقه اجازه تغییر Item های اون حلقه رو ندارید.

List<string> removeItem = new List<string>();
foreach (string text in Session.Keys)
if (text.Contains("Item"))
removeItem.Add(text);

removeItem.ForEach(x => { Session.Remove(x); });