繁体   English   中英

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

[英]Why doesn't this LINQ Query Work?

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

var foundTab = (from tab in tabControl1.TabPages
                where tab.Name == "tabName"
                select tab).First();

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

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

我查了MSDN, TabPageCollection实现了IListICollectionIEnumerable 那么,这里发生了什么? 该错误意味着什么,是否有另一种方法来查询Tab Control的TabPages属性?

尝试这个:

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

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

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

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

但是,但是......? 如果你有名字,你可以直接引用它吗? 的TabPages [ “TABNAME”]

尝试这个:

var tab = tabControl1.TabPages.FirstOrDefault(t => t.Name == "tabName");

另外,请确保你有

using System.Linq;

在您的文件的顶部。

迪伦

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM