2

由于 ListCollectionView 不支持索引器(例如 View[0]),我发现遍历过滤/排序列表的唯一方法是使用 foreach。

1) foreach 是否会确保在迭代期间保留视图中的项目顺序?如果没有,有什么替代方法?

2) 是否有强类型 ListCollectionView?我错过了很多 linq 扩展方法,并且有很多 FindMaxThis、FindFirstThat... :)

4

1 回答 1

2

1)当您将 foreach 与 ListCollectionView 一起使用时,您可能会从基础集合(InternalList属性)中获得一个 Enumerator 。如果您使用 List<> 的实例对其进行初始化,那么您可以非常确定枚举将是有序的。

2)有两种选择。首先,您可以使用内部列表并将其转换为强类型集合或将对它的引用存储在类中的某个位置。其次是直接在 ListCollectionView 实例上使用Cast<> 。对于性能关键的应用程序,我会选择第一种方法。

var collection = new ListCollectionView(new List<int>());
var even = collection
    .Cast<int>()
    .Where(n => n%2 == 0);
于 2012-05-20T04:38:11.337 回答