如何以相反的顺序遍历C#LinkedList

时间:2011-11-19 11:41:25

标签: c#

如何使用C#LinkedList执行以下C ++代码段的等效操作?

std::list<MyClass*>::reverse_iterator itr(it); 
for(; itr != MyList.rend(); ++itr)

1 个答案:

答案 0 :(得分:16)

作为一次性,类似于:

var el = list.Last;
while (el != null) {
    // use el.Value
    el = el.Previous;
}

如果您经常这样做,可能会使用类似的迭代器块来产生所有值:

public static IEnumerable<T> Reverse<T>(this LinkedList<T> list) {
    var el = list.Last;
    while (el != null) {
        yield return el.Value;
        el = el.Previous;
    }
}

然后:

foreach(var val in list.Reverse()) {
    // use val
}