C# поиск текста в listView

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by WAYS, 12 Dec 2009.

  1. WAYS

    WAYS New Member

    Joined:
    12 Nov 2008
    Messages:
    36
    Likes Received:
    0
    Reputations:
    0
    Задача, не загонять в список listView1 элементы, которые уже там есть. Выложил весь кусок, возможно вы подскажете как можно упросить код.

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

    Code:
    //Подсчет одинаковых символов
                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));
                    }
                 }
    
    
     
    #1 WAYS, 12 Dec 2009
    Last edited: 12 Dec 2009
  2. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    FW 3.5

    LINQ

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

    WAYS New Member

    Joined:
    12 Nov 2008
    Messages:
    36
    Likes Received:
    0
    Reputations:
    0
    ты наверное не понял что мне нужно.
    Я записал твою функцию так
    Code:
    if (listView1.Items.OfType<ListViewItem>().Where(a => a.SubItems[1].Text != all[i].ToString()).Count() == 0)
    Результат:
    [​IMG]
     
  4. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    textBox1.Text.Distinct().ToList().ForEach(a => MessageBox.Show(a + "|" + textBox1.Text.Count(b => a == b).ToString()));
     
  5. Algol

    Algol New Member

    Joined:
    29 May 2002
    Messages:
    1,759
    Likes Received:
    4
    Reputations:
    0

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

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

    WAYS New Member

    Joined:
    12 Nov 2008
    Messages:
    36
    Likes Received:
    0
    Reputations:
    0
    Честно говоря это гениально, я могу удалить почти весь этот код программы. Осталось только понять, как мне в этом методе задать несколько параметров. В данном способе можно только 1 :(