C#查询窗口集合
本文关键字:集合 窗口 查询 | 更新日期: 2023-09-27 18:27:54
我在尝试查询System.Windows.WindowCollection时遇到了基本问题。在我的代码中,我有
WindowCollection z = Application.Current.Windows;
并且想做z。Any();
WindowCollection类的定义如下
public sealed class WindowCollection : ICollection, IEnumerable
正如您所看到的,它没有实现IEnumerable<Window>
,因此为了能够访问大多数Enumerable
扩展方法,您首先需要使用Enumerable
z.Cast<Window>().Any();
LINQ仅适用于IEnumerable<T>
接口。WindowCollection仅实现IEnumerable
。有两种选择:
Cast<T>()
-此返回IEnumerable,但如果集合中有无法强制转换为t的元素,则将引发异常OfType<T>()
-这将返回IEnumerable。它跳过了不能强制转换为t的元素,这就是为什么我更喜欢OfType
Application.Current.Windows.OfType<Window>().Any();