由于 ListCollectionView 不支持索引器(例如 View[0]),我发现迭代过滤/排序列表的唯一方法是使用 foreach。
1) foreach 会确保在迭代过程中保留 View 中项目的顺序吗?如果没有,有什么替代方案?
2) 是否有强类型的ListCollectionView?我缺少很多 linq 扩展方法,并且有很多 FindMaxThis、FindFirstThat...:)
最佳答案
1) 当您将 foreach 与 ListCollectionView 一起使用时,您可能会从底层集合(InternalList 属性)中获得一个枚举器。如果您使用 List<> 的实例初始化它,那么您可以非常确定枚举将按顺序进行。
2) 有两种选择。首先,您可以使用内部列表,并将其转换为强类型集合,或者将对其的引用存储在类中的某个位置。第二种是直接在 ListCollectionView 实例上使用 Cast<>。对于性能关键型应用程序,我会选择第一种方法。
var collection = new ListCollectionView(new List<int>());
var even = collection
.Cast<int>()
.Where(n => n%2 == 0);
关于c# - 使用 foreach 迭代 ListCollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10670483/