Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   C# поиск текста в listView (https://forum.antichat.xyz/showthread.php?t=162874)

WAYS 12.12.2009 05:09

C# поиск текста в listView
 
Задача, не загонять в список 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

Цитата:

Сообщение от WAYS
ты наверное не понял что мне нужно.
Я записал твою функцию так
Код:

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

Цитата:

Сообщение от WAYS
if(listView1.FindItemWithText(all[i].ToString()) == null)....

Какая жуть ....

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

WAYS 14.12.2009 02:15

Цитата:

Сообщение от W!z@rD
textBox1.Text.Distinct().ToList().ForEach(a => MessageBox.Show(a + "|" + textBox1.Text.Count(b => a == b).ToString()));

Честно говоря это гениально, я могу удалить почти весь этот код программы. Осталось только понять, как мне в этом методе задать несколько параметров. В данном способе можно только 1 :(


Время: 18:01