为什么这个LINQ查询不起作用?

jas*_*onh 2 c# linq winforms

我试图帮助其他人并写下这个查询:

var foundTab = (from tab in tabControl1.TabPages
                where tab.Name == "tabName"
                select tab).First();
Run Code Online (Sandbox Code Playgroud)

他们报告说他们收到了这个错误:

找不到源类型System.Windows.Forms.TabControl.TabPageCollection'的查询模式的实现.'哪里'找不到.考虑明确指定范围变量'tab'的类型.

我查MSDN和TabPageCollection农具IList,ICollection,IEnumerable.那么,这里发生了什么?该错误意味着什么,是否有另一种方法来查询Tab Control的TabPages属性?

Rob*_*vey 8

试试这个:

var tab = (from System.Windows.Forms.TabPage tab in tabControl1.TabPages
           where tab.Name == "tabName"
           select tab).First();
Run Code Online (Sandbox Code Playgroud)

此代码指定范围变量的类型.


Cam*_*and 5

TabPageCollection实现IEnumerable但不是IEnumerable<T>LINQ 使用的。要修复,请使用如下所示的强制转换方法:

var foundTab = (from tab in tabControl1.TabPages.Cast<TabPage>()
            where tab.Name == "tabName"
            select tab).First();
Run Code Online (Sandbox Code Playgroud)