Simile alla risposta di svick, se non con gli effetti collaterali per evitare i contro e invertire:
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;
});
Edit: non ha più bisogno del source.First()
come per la preoccupazione di 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;
})
);
penso Mi piace ancora di più la soluzione di Danny.
Sarebbe tutta questa soluzione eccetto che il primo .First() lo uccide per operare su qualsiasi sequenza pigra. – mquander
Vero, hmm ...... –
Eccoci, dai un'occhiata ora: D –