我想使用Where
来过滤使用Linq的Application.OpenForms
集合,此网站上的几个问题[1] [2] [3]表明我所有的问题为了做到这一点,需要访问其AllKeys
属性。但是,即使我创建了一个新的Windows窗体应用程序,该集合似乎根本没有这个属性,并且在我尝试使用它时也没有编译。可能是什么原因?
答案 0 :(得分:5)
您必须投放它,因为FormCollection
未实现IEnumerable<T>
但仅IEnumerable
:
var query = Application.OpenForms.Cast<Form>()
.Where(form => ...);
但是,Form
没有AllKeys
属性。你是否混淆了网络形式和winforms?在前者中没有Application.OpenForms
。