PDA

View Full Version : سوال: لیست باکس با عناصر غیر تکراری؟



sajadjamalian
چهارشنبه 27 مرداد 1389, 13:31 عصر
سلام دوستان:
من تو برنامه یه لیست باکس دارم که آیتم های تکراری توش هست، میخوام عناصر تکراری رو حذف کنم، باید چیکار کنم؟

ایمان مدائنی
چهارشنبه 27 مرداد 1389, 14:23 عصر
دوست عزيز ميتوني از يه حلقه استفاده كني
دستور بده تك تك آيتمها رو دربياره و بعد چك كنه كه از اون آيتم چندتا وجود داره اگه دو تا بود يكيشو پاك كنه !

amirh_karimifar
چهارشنبه 27 مرداد 1389, 14:29 عصر
برای راحتی کار از یک لیست پیوندی استفاده کن .

می تونی از کد زیر استفاده کنی .

{
foreach ( object obj in listbox.Item )
if ( !arraylist1.Contains(obj)){
arraylist1.add(obj);
}}

Mani_rf
چهارشنبه 27 مرداد 1389, 14:37 عصر
سلام دوستان:
من تو برنامه یه لیست باکس دارم که آیتم های تکراری توش هست، میخوام عناصر تکراری رو حذف کنم، باید چیکار کنم؟

من هم یک روش بگم.: اگر اطلاعات Combo از دیتابیس لود میشه میتونی بعد از دستور Select کلمه DISTINCT را بنویسی تا آیتم های تکراری یکی در نظر گرفته شوند.


Select DISTINCT * From Table

Salar Ashgi
چهارشنبه 27 مرداد 1389, 23:22 عصر
اگه فرض کنیم ، Object های اضافه شده لیست باکس بصورت String هستن ، خیلی ساده :



List<string> data = new List<string>(listBox1.Items.Cast<string>());
data = data.Distinct().ToList<string>();
listBox1.Items.Clear();
listBox1.Items.AddRange(data.ToArray());


موفق باشید ./

farshadvl
چهارشنبه 30 فروردین 1391, 16:32 عصر
من دستورات بالا را انجام دادم نشد
می خواهم تعداد زیادی رکورد (در حد هزار) رکورد از یک فایل متنی وارد لیست باکس کنم .این فایل متنی من ممکنه رکوردهای تکراری زیادی باشه من می خواهم یک جستجو انجام بدم تا این رکوردهای تکراری را از لیست باکسم حذف کنم.بهترین روش و الګوریتم چیه؟

rahdar
پنج شنبه 31 فروردین 1391, 01:33 صبح
دوست عزیز قبل از اضافه کردن خط به لیست بکس بررسی کنید خط در لیست وجود نداشته باشه
مشابه این

string[] f = File.ReadAllLines("C:\\Matn.txt");
foreach (string line in f)
{
if (listBox1.Items.IndexOf(line) < 0)
listBox1.Items.Add(line);
}

omidamiry
جمعه 01 اردیبهشت 1391, 00:38 صبح
شما فقط باید یکی یکی چک کنید
اول لیست باک خلیه و یکی یکی ادد کن و در هر بار اد کردن باید به تعداد موجود در لیست باکس مقایسه کنی ور اگر با یکیش برابر شد مثلا یک برگردونی و بریک کنی تا اد نکه ودوباره برای گزینه بعدی چک کن

farshadvl
جمعه 01 اردیبهشت 1391, 18:56 عصر
دوست عزیز قبل از اضافه کردن خط به لیست بکس بررسی کنید خط در لیست وجود نداشته باشه
مشابه این

string[] f = File.ReadAllLines("C:\\Matn.txt");
foreach (string line in f)
{
if (listBox1.Items.IndexOf(line) < 0)
listBox1.Items.Add(line);
}


مرسی اما این آرایه وقتی ّر شده با 1000 تا رکورد سنگین نمیشه؟
بهینه ترین روش را میخام آیا همن روشه؟

farshadvl
دوشنبه 11 اردیبهشت 1391, 13:46 عصر
مشکلم حل مرسی از همه دوستان .این کد الان داره جول میده
StreamReader reader = new StreamReader(file_name);
string[] f = File.ReadAllLines(file_name);
foreach (string line in f)
{
if(!listBox1.Items.Contains(line))
listBox1.Items.Add(line);

}

simple
دوشنبه 11 اردیبهشت 1391, 13:54 عصر
خدا رو شكر كلاغه به خونش رسيد:قهقهه:
اين بندگان خدا هم كه از اول همين رو گفتن