Similar a la respuesta de svick, excepto con efectos secundarios para evitar las desventajas e inversa:
int[] source = new int[] { 1, 2, 3, 4, 4, 4, 5, 6, 7, 4, 4, 4, 8, 9, 4, 4, 4 };
List<int> result = new List<int> { source.First() };
source.Aggregate((acc, c) =>
{
if (acc != c)
result.Add(c);
return c;
});
Editar: Ya no necesita la source.First()
como por la preocupación de mquander:
int[] source = new int[] { 1, 2, 3, 4, 4, 4, 5, 6, 7, 4, 4, 4, 8, 9, 4, 4, 4 };
List<int> result = new List<int>();
result.Add(
source.Aggregate((acc, c) =>
{
if (acc != c)
result.Add(acc);
return c;
})
);
pienso Todavía me gusta más la solución de Danny.
Estaría en toda esta solución, excepto que el .First inicial() lo mata por operar en cualquier secuencia perezosa. – mquander
Es cierto, hmm ...... –
Ahí vamos, échale un vistazo ahora: D –