PDA

Просмотр полной версии : C# поиск текста в listView


WAYS
12.12.2009, 05:09
Задача, не загонять в список listView1 элементы, которые уже там есть. Выложил весь кусок, возможно вы подскажете как можно упросить код.

all - arrayList со всеми элементами.


//Подсчет одинаковых символов
int alls = 0;
for (int i = 0; i < all.Count; i++)
{
k = 0;
for (int s = 0; s < all.Count; s++)
{
if (all[i].ToString() == all[s].ToString())
{
k = (k + 1);
}
}
//Если символ повторяется мы его не заносим в таблицу (но этот код ищет по всей таблице, а мне нужно только по 1му столбику)
if(listView1.FindItemWithText(all[i].ToString()) == null)
{
alls++;
lv[0] = all[i].ToString();
lv[1] = k.ToString();
double proc = Math.Round(k * 100 / (double)all.Count, 2);
lv[2] = proc.ToString();
toolStripStatusLabel4.Text = alls.ToString();
listView1.Items.Add(new ListViewItem(lv, 1));
}
}

W!z@rD
12.12.2009, 10:46
FW 3.5

LINQ

if (listView1.Items.OfType<ListViewItem>().Where(a => a.SubItems[1].Text != Тут текст).Count() > 0)
{
return;
}

WAYS
12.12.2009, 17:03
ты наверное не понял что мне нужно.
Я записал твою функцию так
if (listView1.Items.OfType<ListViewItem>().Where(a => a.SubItems[1].Text != all[i].ToString()).Count() == 0)
Результат:
http://ways.ho.ua/re.jpg

W!z@rD
12.12.2009, 17:18
ты наверное не понял что мне нужно.
Я записал твою функцию так
if (listView1.Items.OfType<ListViewItem>().Where(a => a.SubItems[1].Text != all[i].ToString()).Count() == 0)
Результат:
http://ways.ho.ua/re.jpg
textBox1.Text.Distinct().ToList().ForEach(a => MessageBox.Show(a + "|" + textBox1.Text.Count(b => a == b).ToString()));

Algol
12.12.2009, 19:49
if(listView1.FindItemWithText(all[i].ToString()) == null)....
Какая жуть ....

WAYS, ты слышал про абстрактные типы данных? Dictionary например ?
Я конечно понимаю, что у тебя это первая-вторая программа в жизни, но нельзя же писать такой "код", нельзя никогда...

WAYS
14.12.2009, 02:15
textBox1.Text.Distinct().ToList().ForEach(a => MessageBox.Show(a + "|" + textBox1.Text.Count(b => a == b).ToString()));
Честно говоря это гениально, я могу удалить почти весь этот код программы. Осталось только понять, как мне в этом методе задать несколько параметров. В данном способе можно только 1 :(