循环从最后一项开始的可观察集合

本文关键字:开始 观察 集合 一项 最后 循环 | 更新日期: 2023-09-27 18:26:18

foreach(var item in myObservalbleCollection)
{
    //samoe coding
}

上面的代码将从一开始就循环可观察类中的项目。我想从最后一个项目循环这个对象

例如 9,8,7,6,5,4,3,2,1,0 而不是 1,2,3,4,5,6,7,8,9...请给我一个在 c# 中执行此操作的解决方案

循环从最后一项开始的可观察集合

您可以使用从集合末尾到开头运行的 for 循环,而不是使用 foreach

for (var i = myObservableCollection.Count - 1; i >= 0; i -= 1) {
  var item = myObservableCollection[i];
  // Process item
}

这是可能的,因为ObservableCollection<T>实现IList<T>,除了foreach使用的IEnumerable<T>提供的正向访问之外,它还提供集合中元素的计数和对这些元素的索引访问。这是最有效的解决方案。

您还可以使用 LINQ Reverse,它可用于任何集合实现IEnumerable<T>

foreach (var item in myObservableCollection.Reverse()) {
  // Process item
}

这实际上会将集合中的所有元素复制到新数组,然后再以相反的顺序迭代它们。虽然效率低于第一种解决方案,但在大多数情况下无关紧要。

您可以reverse可观察集合并执行循环

var myObservalbleCollection = new ObservableCollection<YourType>(collection.Reverse());    
foreach(var item in myObservalbleCollection)
{
    //some coding
}