شناسایی ایتم های تکراری در listbox
من در listboxم یک سری ایتم وارد می شه کاری کرد که بعد از وارد شدن ایتم ها ، ایتم های تکراری شناسایی و همه ی اونا به جز یکی حذف بشه
امکان داره در یک ان جندین ایتم به لیست باکس من اضافه بشه پس فکر کنم نتونم قبل از ورود ایتم ها اونا رو شناسایی کنم اگر هم می شه لطفا کمک کنید
نقل قول: شناسایی ایتم های تکراری در listbox
کد:
if (listBox1.Items.Contains("textbox.text") )
{
listBox1.Items.Add(textbox.text);
}
نقل قول: شناسایی ایتم های تکراری در listbox
دوست عزیز به کد زیر یک نگاه بنداز ...
for (int i = 0; i < 2; i++)
{
var items = from item in linl
where item.Contains(a.SelectedText)
select item;
foreach (var item in items)
{
var parts = item.Split(newchar[] { '|' });
words.Add(newWord() { Text = parts[0], AttachedText = parts[1], IsShellCommand = (parts[2] == "true") });
listBox1.Items.Add(parts[1]);
a.Select(4, 7);
}
اگر نگاه کرده باشی متوجه شدی که من دارم از linq استفاده می کنم که شرطو در مجموعه چک می کنه و ممکنه چندین ایتم به لیست باکس اضافه کنه و همان طور که می بینی کد درون یک حلقه for قرار داره که دو بار شرط برسی می کنه حالا امکان داره کلمه ای توی دو شرط قرار بگیره و 2 بار به لیست باکس add بشه و به نظر من امکان شناسایی هنگام add کردن وجود نداره و باید بعد اضافه شدن ایتم های تکراری شناسایی ، حذف بشوند
نقل قول: شناسایی ایتم های تکراری در listbox
به دو صورت میتونید این کار رو انجام بدید
یکی اینکه هربار برای اضافه کردن چک کنید که آیتم تکراری درج نشه.مثال if (!(listBox1.Items.Contains(textBox2.Text)))
listBox1.Items.Add(textBox2.Text);
راه دیگه اینکه در مجموعه ای که قراره اضافه کنید موارد تکراری رو حذف کنید و بعد یکجا اضافه کنید. مثال List<string> items = new List<string>() { "a", "b", "c", "a" };
listBox1.Items.AddRange(items.Distinct().ToArray() );