Как посчитать совпадения и положить в таблицу

xlaber

Client
Регистрация
08.11.2010
Сообщения
60
Благодарностей
25
Баллы
18
Дано:
список такого содержания:
1
1
2
2
2
3
4
5
5
нужно сформировать таблицу, чтобы в ней было значение и сколько раз повторялось:
1;2
2;3
3;1
4;1
5;2

Сейчас делаю так: беру первую строку и считаю количество строк, удаляю эту строку и снова считаю количество строк, из начального кол-ва строк вычитаю текущее, так получаю количество таких строк и ложу в таблицу.... все бы ничего, но при 250к строк занимает около часа...
Как можно реализовать более шустро?
 

sanya

Client
Регистрация
08.09.2015
Сообщения
184
Благодарностей
49
Баллы
28
Как вариант, отсортировать список, и тогда сравнивать, по факту выйдет меньше сравнений, а тем самым сократится время обработки
 

xlaber

Client
Регистрация
08.11.2010
Сообщения
60
Благодарностей
25
Баллы
18
не совсем понял что сравнивать
 

sanya

Client
Регистрация
08.09.2015
Сообщения
184
Благодарностей
49
Баллы
28
Прошу прощения за корявость,
перед этим кубиком отсортируйте список

Код:
var spisok=project.Lists["temp"];
var tablica=project.Tables["temp"];
string znachenie="";
int schetchik=0;

for(int i=0;i<spisok.Count;i++)
{
  
    if(znachenie.Contains(spisok[i])==false)
    {
        if(i!=0)
            tablica.AddRow(znachenie+";"+Convert.ToString(schetchik));
        znachenie=spisok[i];
        schetchik=1;
      
    }
    else
    {
        schetchik++;
    }
  
}
tablica.AddRow(znachenie+";"+Convert.ToString(schetchik));
 
  • Спасибо
Реакции: xlaber

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)