c# - 使用 foreach 迭代 ListCollectionView

标签 c# .net wpf

由于 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/

相关文章:

c# - 如何捕捉 "Unhandled win32 exception occured in AppName [procId]."

.net - StringComparison 和 StringComparer 之间转换的优雅方式?

.net - 分布式事务的 SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER

WPF - 使用变量/参数创建可重用样式

c# - WPF ItemsControl 拉伸(stretch) ButtonContent 的 FontSize

c# - 如何获取最大http请求长度时间?

c# - 获取所有具有相同颜色的像素坐标

c# - 如何显示数据网格中文本框中的所有数据?

.NET 单元测试框架,可以处理多个线程的测试

c# - 如何清除 WPF 中的图像控件 (C#)