.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;

public static class Program
{
    static void Main()
    {
        var source = new string[]
        {
            "Red", "red", "blue", "green", "green", "red", "red", "yellow",
            "WHITE", "white", "red", "white", "white"
        };
        var result = source.ExcludeConsecutiveDuplicates(StringComparer.OrdinalIgnoreCase);
        Console.WriteLine($"Result: {String.Join(", ", result)}");
    }

    public static IEnumerable<TSource> ExcludeConsecutiveDuplicates<TSource>(
        this IEnumerable<TSource> source, IEqualityComparer<TSource> comparer = null)
    {
        ArgumentNullException.ThrowIfNull(source);
        comparer ??= EqualityComparer<TSource>.Default;
        (TSource Value, bool HasValue) previous = default;
        foreach (var item in source)
        {
            bool isDuplicate = previous.HasValue && comparer.Equals(previous.Value, item);
            if (!isDuplicate) yield return item;
            previous = (item, true);
        }
    }
}
;