Удаление всех одинаковых строк

b1zar

Client
Регистрация
29.06.2019
Сообщения
107
Благодарностей
67
Баллы
28
Доброго времени суток. Что то подобного не нашел на форуме. Мне для высчитывания процента дублей, нужно удалить в списке все одинаковые строки. Т.е есть список:
Трава
Трава
Дом
Колпак
Табак
Колпак

Т.е мне нужно из списка удалить повторяющиеся слова и получится он должен таким:

Дом
Табак

Подскажите как это реализовать, удаление дубликатов тут не подойдет, потому что этот снипет оставит оригинал, но удалит повторы.
 

Old

Client
Регистрация
24.01.2018
Сообщения
176
Благодарностей
87
Баллы
28
Держи:
Код:
var list = project.Lists["Список"];
var buffer = (from q in list
group q by q into l
where l.Count() == 1
select l.Key).ToList();
list.Clear();
list.AddRange(buffer);
Нашел когда-то здесь на форуме.
 

b1zar

Client
Регистрация
29.06.2019
Сообщения
107
Благодарностей
67
Баллы
28
Держи:
Код:
var list = project.Lists["Список"];
var buffer = (from q in list
group q by q into l
where l.Count() == 1
select l.Key).ToList();
list.Clear();
list.AddRange(buffer);
Нашел когда-то здесь на форуме.
Очень помог, помню, что где то видел подобное, но не смог найти.

На будущее кому пригодиться готовый код на C# высчитывает процент дублей в тексте
C#:
project.Lists["list"].Clear();

var inputstring = "";
string texttostring = "";
int count = 0;
string pattern = "";
int i = 0;
string input = "";
string[] words = null;

//Подсчет слов в переменной до удаление
    pattern = "[^\\w]";
        //get all spaces and other signs, like: '.' '?' '!'
        input = project.Variables["txt5"].Value;
        words = null;
        i = 0;
        count = 0;
        words = Regex.Split(input, pattern, RegexOptions.IgnoreCase);
        for (i = words.GetLowerBound(0); i <= words.GetUpperBound(0); i++) {
            if (words[i].ToString() == string.Empty)
                count = count - 1;
            count = count + 1;
        }
double LenghtWord = count;

// Текст который будет убираться в список
string text = project.ExecuteMacro(project.Variables["txt5"].Value);
// Перемещаем в список с разделителем пробел
Macros.TextProcessing.ToList(text, " ", "Regex", project, project.Lists["list"]);
        
//Удаление всех одинаковых слов
var list = project.Lists["list"];
var buffer = (from q in list
group q by q into l
where l.Count() == 1
select l.Key).ToList();
list.Clear();
list.AddRange(buffer);

project.Variables["DublicateA"].Value = string.Join(" ", project.Lists["list"]);

//Подсчет слов в переменной после удаления
    pattern = "[^\\w]";
        //get all spaces and other signs, like: '.' '?' '!'
        input = project.Variables["DublicateA"].Value;
        words = null;
        i = 0;
        count = 0;
        words = Regex.Split(input, pattern, RegexOptions.IgnoreCase);
        for (i = words.GetLowerBound(0); i <= words.GetUpperBound(0); i++) {
            if (words[i].ToString() == string.Empty)
                count = count - 1;
            count = count + 1;
        }


double Percent = 100 - (100 / LenghtWord * count);

return Percent;
 
  • Спасибо
Реакции: Mikhail B. и Old

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