View Full Version : دست رسي به محتويات generic list
mohsen_namad
یک شنبه 01 اسفند 1389, 23:50 عصر
با سلام ، من نميدونم چطوري ميشه به اطلاعاتي كه تو generic list وارد ميشه دست رسي داشت. مثلا تو كد زير چطوري ميشه به productID=2 رو از ليست حذف كرد ؟
protected void b1_Click(object sender, EventArgs e)
{
if (Session["Basket"] == null)
{
List<Basket> lstBasket = new List<Basket>();
lstBasket.Add(new Basket()
{
ProductID = 1,
ProductName = "بستنی قیفی میهن با طعم هولو",
Price = 1000,
Quantity = 1
});
Session["Basket"] = lstBasket;
}
else
{
List<Basket> lstBasket = (List<Basket>)Session["Basket"];
lstBasket.Add(new Basket()
{
ProductID = 1,
ProductName = "بستنی قیفی میهن با طعم هولو",
Price = 1000,
Quantity = 1
});
Session["Basket"] = lstBasket;
}
GridView1.DataSource = (List<Basket>)Session["Basket"];
GridView1.DataBind();
}
public class Basket
{
public int ProductID { get; set; }
public string ProductName { get; set; }
public int Price { get; set; }
public int Quantity { get; set; }
}
mohsen_namad
دوشنبه 02 اسفند 1389, 22:17 عصر
دوستان خواهش مي كنم كسي ميتونه مشكل منو حل كنه . :ناراحت::ناراحت::ناراحت:
rainlover
سه شنبه 03 اسفند 1389, 00:06 صبح
یه راه ساده اینه:
foreach(Basket b in lstBasket)
{
if(b.ProductId == 2)
lstBasket.Remove(b)
//break;
}
اگه تو اون لیست فقط یک عنصر باید حذف شود کامنت رو بر میداری و break اجرا میشه. سعی کن این کد رو عینا کپی نکنی چون ممکنه اشکالات لپی داشته باشه ولی منطقش درسته.
mohsen_namad
سه شنبه 03 اسفند 1389, 09:56 صبح
سلام ببخشيد من اين كارو كردم ولي هيچ اتفاقي نميفته اينم همون كده:
پروژه رو تو ضميمه گذاشتم ميشه يه نگاهي بهش بندازيد.
protected void Button1_Click(object sender, EventArgs e)
{
List<Basket> lstBasket = new List<Basket>();
foreach(Basket b in lstBasket)
{
if (b.ProductID == 1)
lstBasket.Remove(b);
Session["Basket"] = lstBasket;
}
GridView2.DataSource = (List<Basket>)Session["Basket"];
GridView2.DataBind();
}
rainlover
سه شنبه 03 اسفند 1389, 11:56 صبح
سلام
الان سركارم و نمي تونم جواب بدم
ان شاءالله شب كه رفتم خونه جواب ميدم
rainlover
سه شنبه 03 اسفند 1389, 23:18 عصر
اینطور که من می بینم لیست تو کلا یک عضو داره. چون زیر یه رویداد گذاشتی و دائما اونو new می کنی و اجازه نمیدی که پر بشه که بعدش بخوای ازش حذف کنی
والا کماکان فکر میکنم همیون روشی که در بالا اشاره کردم درسته.
به عنوان نمونه این برنامه رو بگیر و نتیجشو خودت می بینی
rainlover
سه شنبه 03 اسفند 1389, 23:22 عصر
این هم از یه برنامه نمونه که همی چیز توش معلومه
mohsen_namad
پنج شنبه 05 اسفند 1389, 00:07 صبح
سلام با چيزايي كه شما گفتيد اين كارو كردم ولي حذف نمي كنه ؟
List<Basket> lstBasket = new List<Basket>();
lstBasket = (List<Basket>)Session["Basket"];
foreach (Basket b in lstBasket)
{
lstBasket.Remove(b.Price);
lstBasket.Remove(b.ProductID);
lstBasket.Remove(b.ProductName);
lstBasket.Remove(b.Quantity);
}
mmd2009
پنج شنبه 05 اسفند 1389, 02:23 صبح
با سلام.
اینم یک نمونه که واست نوشتم. امیدوارم کارتو راه بندازه
private void button2_Click(object sender, EventArgs e)
{
List<Basket> _Basket = new List<Basket>();
_Basket.Add(new Basket()
{
ProductID = 1,
ProductName = "chub"
});
_Basket.Add(new Basket()
{
ProductID = 2,
ProductName = "livan"
});
_Basket.Add(new Basket()
{
ProductID = 3,
ProductName = "chasb"
});
MessageBox.Show(_Basket.Count.ToString());
Basket b = _Basket.Where(id => id.ProductID == 2).Single();
_Basket.Remove(b);
MessageBox.Show(_Basket.Count.ToString());
}
public class Basket
{
public int ProductID { get; set; }
public string ProductName { get; set; }
}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.