代码之家  ›  专栏  ›  技术社区  ›  jasonh

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

  •  2
  • jasonh  · 技术社区  · 16 年前

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

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

    System.Windows.Forms.TabControl.TabPageCollection'。 找不到“Where”。明确考虑 指定范围的类型

    我查了MSDN和 TabPageCollection 工具 IList ICollection IEnumerable . 那么,这是怎么回事?这个错误是什么意思?有没有其他方法可以查询选项卡控件的 TabPages 财产?

    4 回复  |  直到 16 年前
        1
  •  8
  •   Robert Harvey    16 年前

    试试这个:

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

        2
  •  4
  •   Cameron MacFarland    16 年前

    TabPageCollection 工具 IEnumerable 但不是 IEnumerable<T> 这就是LINQ使用的。要修复此问题,请使用cast方法,如下所示:

    var foundTab = (from tab in tabControl1.TabPages.Cast<TabPage>()
                where tab.Name == "tabName"
                select tab).First();
    
        3
  •  2
  •   John Walsh    14 年前

    但是,但是。。。。?如果你有名字,你可以直接引用它?TabPages[“tabname”]

        4
  •  0
  •   Dylan Vester    16 年前

    试试这个:

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

    另外,确保你有

    using System.Linq;
    

    在文件的顶部。

    推荐文章