LINQ пересобрать строку без дубликатов

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Добрый день форум
В процессе работы, программа формирует строковые переменные такого типа (под запись в лист)
primer 1 - site1:pattern | a1 | a2 | b2 | b1 | c1 | a1
primer 2 - site2:host_p | a1 | a1 | c1 | c1 | c2
На лету контроль дубликатов сделать не возможно (библа энтерпрайз строковые переменные вылетают с нее)
Подкажите, как можно пересобрать данную переменую без дубликатов с сохранением структуры строки, типа
primer 1 - site1:pattern | a1 | a2 | b2 | b1 | c1
primer 2 - site2:host_p | a1 | c1 | c2

В LINQ есть что то типа такого return query.SelectMany(x => Regex.Split(x)).Distinct().ToArray();Но к сожалению не осилил
Спасибо
PS -Можно классом или методом
 

Carty

Client
Регистрация
16.06.2021
Сообщения
39
Благодарностей
68
Баллы
18
C#:
var s = "site1:pattern | a1 | a2 | b2 | b1 | c1 | a1";

s = string.Join(" | ", s.Split('|', StringSplitOptions.TrimEntries).Distinct());

Console.WriteLine(s);

// site1:pattern | a1 | a2 | b2 | b1 | c1

var l = new List<string>
{
    "site1:pattern | a1 | a2 | b2 | b1 | c1 | a1",
    "site2:host_p | a1 | a1 | c1 | c1 | c2"
};

var l2 = l.Select(s => string.Join(" | ", s.Split("|", StringSplitOptions.TrimEntries).Distinct())).ToList();

l2.ForEach(Console.WriteLine);

// site1:pattern | a1 | a2 | b2 | b1 | c1
// site2:host_p | a1 | c1 | c2
 
  • Спасибо
Реакции: DevOps, Azakim и Sho

Azakim

Client
Регистрация
25.07.2021
Сообщения
166
Благодарностей
31
Баллы
28
C#:
var s = "site1:pattern | a1 | a2 | b2 | b1 | c1 | a1";

s = string.Join(" | ", s.Split('|', StringSplitOptions.TrimEntries).Distinct());

Console.WriteLine(s);

// site1:pattern | a1 | a2 | b2 | b1 | c1

var l = new List<string>
{
    "site1:pattern | a1 | a2 | b2 | b1 | c1 | a1",
    "site2:host_p | a1 | a1 | c1 | c1 | c2"
};

var l2 = l.Select(s => string.Join(" | ", s.Split("|", StringSplitOptions.TrimEntries).Distinct())).ToList();

l2.ForEach(Console.WriteLine);

// site1:pattern | a1 | a2 | b2 | b1 | c1
// site2:host_p | a1 | c1 | c2
Сработал код выше?
 

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
C#:
var s = "site1:pattern | a1 | a2 | b2 | b1 | c1 | a1";

s = string.Join(" | ", s.Split('|', StringSplitOptions.TrimEntries).Distinct());

Console.WriteLine(s);

// site1:pattern | a1 | a2 | b2 | b1 | c1

var l = new List<string>
{
    "site1:pattern | a1 | a2 | b2 | b1 | c1 | a1",
    "site2:host_p | a1 | a1 | c1 | c1 | c2"
};

var l2 = l.Select(s => string.Join(" | ", s.Split("|", StringSplitOptions.TrimEntries).Distinct())).ToList();

l2.ForEach(Console.WriteLine);

// site1:pattern | a1 | a2 | b2 | b1 | c1
// site2:host_p | a1 | c1 | c2
Большая благодарность, спасибо
 

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