Почему этот LINQ Query не работает? - PullRequest
2 голосов
/ 06 октября 2009

Я пытался помочь кому-то еще и написал этот запрос:

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

И они сообщили, что получили эту ошибку:

Не удалось найти реализацию шаблон запроса для типа источника System.Windows.Forms.TabControl.TabPageCollection. «Где» не найдено. Рассмотрим в явном виде указание типа диапазона переменная 'tab'.

Я проверил MSDN и TabPageCollection реализует IList, ICollection, IEnumerable. Итак, что здесь происходит? Что означает эта ошибка, и есть ли другой способ запросить свойство TabPages элемента управления вкладкой?

Ответы [ 4 ]

8 голосов
/ 06 октября 2009

Попробуйте это:

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

Этот код указывает тип переменной диапазона.

4 голосов
/ 06 октября 2009

TabPageCollection реализует IEnumerable, но не IEnumerable<T>, который использует LINQ. Чтобы исправить, используйте метод приведения так:

var foundTab = (from tab in tabControl1.TabPages.Cast<TabPage>()
            where tab.Name == "tabName"
            select tab).First();
2 голосов
/ 08 марта 2012

Но, но, но ....? Вы могли бы просто сослаться на это напрямую, если у вас есть имя? TabPages [ "TABNAME"]

0 голосов
/ 06 октября 2009

Попробуйте это:

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

Также убедитесь, что у вас есть

using System.Linq;

вверху вашего файла.

Dylan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...