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

时间:2014-10-13 10:46:26

标签: c# .net

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

上面的代码将从头开始循环observable类中的项。我想从最后一个Item

循环这个对象

ex 9,8,7,6,5,4,3,2,1,0而不是1,2,3,4,5,6,7,8,9 ...... 请给我一个解决方案,在c#

中执行此操作

2 个答案:

答案 0 :(得分:3)

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

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

这是可能的,因为ObservableCollection<T>实现了IList<T>,它提供了集合中元素的计数和对这些元素的索引访问,以及由IEnumerable<T>提供的前向测试。 foreach。这是最有效的解决方案。

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

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

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

答案 1 :(得分:2)

您可以reverse observablecollection并执行循环

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