我想使用Linq来过滤带有Application.OpenForms的Where集合,并在这个网站上看到了几个与此相关的问题[1][2][3] ,建议我所需要做的就是访问它的AllKeys属性。然而,即使我创建一个新的Windows Forms应用程序,该集合似乎根本没有这个属性,并且在尝试使用它时不会编译。可能的原因是什么?
由于 FormCollection 只实现了 IEnumerable 而不是 IEnumerable<T>,所以您需要进行强制转换: var query = Application.OpenForms.Cast<Form>() .Where(form => ...); 然而,Form没有AllKeys属性。您是否混淆了WebForms和WinForms?在前者中,没有Application.OpenForms。
Application.OpenForms.Cast<Form>().Where(x=> ... );
- Sriram Sakthivel