Как сказано в комментариях, использование GroupAdjacent
для группировки смежных дубликатов с использованием пакета nuget MoreLinq
является опцией:
var strings = new List<string> { "red", "red", "blue", "green", "green", "red", "red", "red", "red", "red", "red", "yellow", "white", "white", "red", "white", "white" };
var result = strings
.GroupAdjacent(x => x)
.SelectMany(grp => (grp.Count() >= 5) ?
grp.Select(x => "ignore") :
grp);
Console.WriteLine("{ " + string.Join(", ", result) + " }");
Результат:
{ red, red, blue, green, green, ignore, ignore, ignore, ignore, ignore, ignore, yellow, white, white, red, white, white }
Выше также используется Enumerable.SelectMany
, чтобы объединить сгруппированную последовательность IEnumerable<IEnumerable<string>>
в IEnumerable<string>
, а затем троичный оператор, чтобы решить, должна ли группа быть полностьюзаменяется на "ignore"
на Enumerable.Select
, если длина группы от Enumerable.Count
больше или равна 5 , либо оставлена как есть.