Linq - итерация с опережением

Я прохожу через коллекцию, используя шаблон типа посетителя, и мне нужно получить доступ к текущему и следующему элементу в списке. На данный момент я делаю это с помощью метода расширения, подобного этому

public void Visit<TItem>(this IEnumerable<TItem> theList, Action<TItem, TItem> visitor)
{
    for (i = 0; i <= theList.Count - 1; i++) {
        if (i == theList.Count - 1) {
            visitor(theList(i), null);
        } else {
            visitor(theList(i), theList(i + 1));
        }    
    }    
}

. Мне было интересно, есть ли другие / лучшие / более элегантные способы достижения этого? На данный момент я думаю, что мне нужен только доступ к текущему и следующему элементам в списке, но мне интересно, могу ли я столкнуться с ситуациями, когда мне может потребоваться, например, просмотреть следующие n элементов вперед.

9
задан Adrian Carneiro 28 June 2011 в 14:29
поделиться