由于ListCollectionView不支持索引器(ex View [0]),我发现迭代筛选/排序列表的唯一方法是使用foreach。
1)foreach会确保在迭代期间保留视图中项目的顺序吗?如果没有,有什么替代方案?
2)是否有强类型的ListCollectionView?我错过了很多linq扩展方法,并且有很多FindMaxThis,FindFirstThat ...... :)
答案 0 :(得分:1)
1)当您使用带有ListCollectionView的foreach时,您可能会从底层集合中获取一个Enumerator( InternalList 属性)。如果使用List<>的实例对其进行初始化那么你可以非常肯定枚举将是有序的。
2)有两种选择。首先,您可以使用内部列表,并将其强制转换为强类型集合,或者在类中的某个位置存储对它的引用。其次是直接在ListCollectionView实例上使用 Cast<> 。对于性能关键应用程序,我会选择第一种方法。
var collection = new ListCollectionView(new List<int>());
var even = collection
.Cast<int>()
.Where(n => n%2 == 0);