Как 1-off, что-то вроде:
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
}