Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Дубликаты в list

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 11.12.2011, 15:25   #1
 Сержант
Аватар для pixfid
 
pixfid скоро будет известенpixfid скоро будет известенpixfid скоро будет известенpixfid скоро будет известенpixfid скоро будет известен
Регистрация: 20.12.2010
Сообщений: 102
Популярность: 427
Сказал(а) спасибо: 1
Поблагодарили 93 раз(а) в 60 сообщениях
Отправить сообщение для pixfid с помощью ICQ Отправить сообщение для pixfid с помощью Skype™
 
По умолчанию Дубликаты в list

Есть отсортированный list
подобного содержания:
205436-1150.3284-687.0675-304-23-295
205437-1309.3699-1163.5947-53-23-295
205437-1309.3903-1163.6443-55-23-295
205437-324.38602-426.34479-331-23-295
206179-1132.05-846.85999-322-23-295
212283-1025.0581-611.58704-255-23-295
212283-1069.8805-662.39661-270-23-295
212283-1110.3353-487.45929-270-23-295

Задача посчитать одинаковые значения(205437 - 3 штуки), и т.д.
________________
79099c42081131387cabf8f236676a5a

Последний раз редактировалось pixfid; 11.12.2011 в 15:38.
  Ответить с цитированием
Старый 11.12.2011, 20:22   #2
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: Дубликаты в list

Было неоднократно.
Как вариант:
Код:
List<string> lines = new List<string>
{
 "205436-1150.3284-687.0675-304-23-295"
" 205437-1309.3699-1163.5947-53-23-295"
 "205437-1309.3903-1163.6443-55-23-295"
" 205437-324.38602-426.34479-331-23-295"
 "206179-1132.05-846.85999-322-23-295"
" 212283-1025.0581-611.58704-255-23-295"
 "212283-1069.8805-662.39661-270-23-295"
" 212283-1110.3353-487.45929-270-23-295"
};
foreach(string line in lines)
{
var tmp = from item in lines
     where item == line
     select(item);
if(tmp.Length>1)
        MessageBox.Show(string.Format("line\"{0}\" is repeated {1} times", line, tmp.Length));
}
Но это некрасиво, если учесть что в временную переменную tmp мы несколько раз подряд записываем (о ужас) юникодовую строку...
Если обрабатывать порядка хотя бы тысяч ста объектов - операция сильно затянется.
Можно вместо select(item) ввести переменную (условно) counter равную нулю, и в селекте ее плюсовать на еденицу.

Можно узать функцию Count() списка, и это куда более разумный вариант, но надо создавать делегат, проверяющий равенство, а это несколько лишних строк, за которые лично меня бы моя лень задушила б..

p.s. можно (в 4м нете)узать from item in lines.AsParallel() при обработки очень больших объемах данных


UPD1:
Так бы и писал, что от дублей почистить надо.
По сабжу-то вроде надо их посчитать
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой

Последний раз редактировалось •theSaboteur•; 12.12.2011 в 14:29. Причина: update
  Ответить с цитированием
Старый 12.12.2011, 10:26   #3
 Сержант
Аватар для pixfid
 
pixfid скоро будет известенpixfid скоро будет известенpixfid скоро будет известенpixfid скоро будет известенpixfid скоро будет известен
Регистрация: 20.12.2010
Сообщений: 102
Популярность: 427
Сказал(а) спасибо: 1
Поблагодарили 93 раз(а) в 60 сообщениях
Отправить сообщение для pixfid с помощью ICQ Отправить сообщение для pixfid с помощью Skype™
 
По умолчанию Re: Дубликаты в list

Спасибо, но уже решил проблемку, разбил на 2 прохода, препарс с выдиранием только id 205436, проверка на дубликаты и удаление, и основной парсинг файла уже по списку оставшемуся.

Код:
        static List<string> removeDuplicates(List<string> inputList)
        {
            List<string> finalList = new List<string>();
            foreach (string currValue in inputList)
            {
                if (!finalList.Contains(currValue))
                {
                    finalList.Add(currValue);
                }
            }
            return finalList;
        }
удаление дубликатов, мб пригодится
________________
79099c42081131387cabf8f236676a5a
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Информация] Server LIST "Unix Общение и обсуждение Perfect World 5 04.12.2011 22:25
[Помогите!] Дубликаты при Бруте Scarlet67 Общение и обсуждение, архив Lineage 2 6 28.10.2010 12:57
[Помогите!] Network list JonyB Вопросы и ответы, обсуждения 0 27.03.2010 12:26

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 04:32.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net