Elaborateling slighty on the nice answer by Jon Skeet, this could be versatile:
public static IEnumerable<T> Directional<T>(this IList<T> items, bool Forwards) {
if (Forwards) foreach (T item in items) yield return item;
else for (int i = items.Count-1; 0<=i; i--) yield return items[i];
}
And then use as
foreach (var item in myList.Directional(forwardsCondition)) {
.
.
}