При работе со списком оставить только дубли

Valentin1144

Client
Регистрация
12.11.2019
Сообщения
30
Благодарностей
16
Баллы
8
Есть список List2. В нем много строк, из них есть те что дублируются 2, 3 и более раз. Подскажите, как на C# написать кубик, который будет оставлять в списке только те дубли которые встречаются заданное количество раз и более. К примеру если задан параметр 2, то 2 дубля и более, если 3 то 3 дубля и более. Подскажите пожалуйста как сделать, так как в стандартных средствах не нашел, только удаление дублей.
 

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93
попробуй (если у тебя в списке миллион строк, то хз отработает ли):

C#:
IZennoList spisok = project.Lists["Список 1"]; //список с фразами
IZennoList spisok2 = project.Lists["Список 2"]; //куда сложим результат
int kol=3; //сколько совпадений искать
for(int i=0;i<spisok.Count;i++)
{
    int sch=0;
    for(int j=0;j<spisok.Count;j++)
    {
        if(spisok[i] == spisok[j])
        {
            sch++;
            if(sch == kol)
            {
                spisok2.Add(spisok[i]);
                break;
            }
        }
    }
}
 
  • Спасибо
Реакции: Valentin1144

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
C#:
int count = int.Parse(project.Variables["count"].Value);
var list = project.Lists["List2"];
List<string> temp = new List<string>(list.ToList());
list.Clear();
temp.GroupBy(x=>x)
    .ToDictionary(x=>x.Key,x=>x.Count())
        .Where(x=>x.Value >= count).ToList()
            .ForEach(x=>list.Add(x.Key));
Потом скажете, как отработало на миллионе строк
 

Valentin1144

Client
Регистрация
12.11.2019
Сообщения
30
Благодарностей
16
Баллы
8
Большое спасибо, все отлично и шустро работает. Строк конечно не миллион, но очень быстро
 

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