Es ist ein interessantes Problem, würde ich vielleicht für die Suche nach Ausdruck Syntax gehen, wo es wie folgt
int[] array = {1,2,3,3,4,5};
var query = from item in array.Select((val, index) => new { val, index })
join nextItem in array.Select((val, index) => new { val, index })
on item.index equals (nextItem.index + 1)
where item.val == nextItem.val
select item.val;
getan werden kann, die drei aus dem Array extrahieren würde (oder Liste). Was natürlich im Abfrageausdruck getan werden kann, kann natürlich in Lambda gemacht werden.
Bearbeiten Joels Lösung ist viel einfacher als meine und wenn Sie es nur brauchen, um auf einer Liste oder einem Array zu arbeiten, ist es perfekt. Wenn Sie etwas flexibleres benötigen, um gegen IEnumerable zu arbeiten, dann sollten Sie etwas wie das oben genannte anstreben (oder etwas, das offensichtlich besser ist).
Bei "index, item" ist etwas schief gelaufen (ich musste sie umschalten), aber deine erste Lösung funktioniert und es ist kein Zähler draußen! Vielen Dank. – Gpx