PDA

View Full Version : مبتدی: حذف کلمات تکراری از یک listbox



amirreza.net
شنبه 23 دی 1391, 00:43 صبح
سلام به همه
فرض کنید من یک لیست باکس دارم که آیتم هاش به صورت زیر هست:
this
is
a
app
this
app
barname nevis
web
site
app
همون طور که می بینیدبرای مثال کلمه this یا app که سه بار تکرار شده حالا من کدی می خوام که کلمات تکراریو حذف کنه و فقط یک کلمه باقی بزاره مثل زیر:
is
a
this
app
barname nevis
web
site
چجوری می تونم کلمات تکراریو از یه لیست باکس حذف کنم و یک نمونه از کلمه تکراری بمونه؟

butterfly8528
شنبه 23 دی 1391, 03:04 صبح
سلام .
private void RemDupItems(ListBox myList)
{
for (int a = 0; a <= myList.Items.Count - 1; a++)
for (int b = myList.Items.Count - 1; b >= a + 1; b--)
if (myList.Items[a] == myList.Items[b])
myList.Items.RemoveAt(b);
}


// RemDupItems(listBox1);
موفق باشید :لبخندساده:.

Mahmoud.Afrad
شنبه 23 دی 1391, 05:13 صبح
از دو راه میتونید. هم با حلقه و هم با linq(که با linq در یک خط بدست میاد)

//using System.Linq;

listBox1.Items.AddRange("s a f s g e f d a s s s".Split(' '));

List<string> uniqueWords = new List<string>();
uniqueWords = listBox1.Items.OfType<string>().Distinct().ToList();
/* OR
foreach (string st in listBox1.Items)
{
if (!uniqueWords.Contains(st))
{
uniqueWords.Add(st);
}
}
*/
listBox1.Items.Clear();
listBox1.Items.AddRange(uniqueWords.ToArray());

butterfly8528
شنبه 23 دی 1391, 12:44 عصر
سلام .
بله از طریق Linq هم میشه از این قبیل کار ها رو به سادگی انجام داد :
private void RemDupItems(ListBox myList)
{
var items = myList.Items.OfType<string>().GroupBy(item => item).ToList();
myList.Items.Clear();

foreach (var item in items)
myList.Items.Add(item.Key);
}

moharam1370
دوشنبه 29 مهر 1392, 10:55 صبح
VS من ;using System.Linq نداره !!!

مهدی هادیان2
پنج شنبه 02 آبان 1392, 12:58 عصر
بسم الله الرحمن الرحیم

VS من ;using System.Linq نداره !!!
با سلام
روی پروژه راست کلیک کنید و Target Framework Version رو به 3.5 تغییر دهید.
موفق باشید.