如何使用Linq过滤Application.OpenForms集合?

mzi*_*mzi 3 c# linq

我想用Linq Where来过滤这个Application.OpenForms集合,这个网站上的几个问题 [1] [2] [3]表明,为了做到这一点,我需要的只是访问它的AllKeys属性.但是,即使我创建一个新的Windows窗体应用程序,该集合似乎根本没有此属性,并且在我尝试使用它时不会编译.可能是什么原因?

Tim*_*ter 5

你必须抛出它,因为FormCollection没有实现, IEnumerable<T>但只有IEnumerable:

var query = Application.OpenForms.Cast<Form>()
    .Where(form => ...);
Run Code Online (Sandbox Code Playgroud)

但是,Form没有AllKeys财产.你是否混淆了网络形式和winforms?在前者没有Application.OpenForms.