دوست عزیز به کد زیر یک نگاه بنداز ...

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 کردن وجود نداره و باید بعد اضافه شدن ایتم های تکراری شناسایی ، حذف بشوند