Почему этот простой оператор синтаксиса запроса LINQ не переводится в синтаксис метода? - PullRequest
0 голосов
/ 23 сентября 2011

Вот версия синтаксиса запроса:

DataGridViewRowCollection mydgvrs = new DataGridView().Rows;

IEnumerable<DataGridViewRow> a =
 from DataGridViewRow row in mydgvrs
 where row.Height > 0
 select row;

, что хорошо, и версия синтаксиса метода:

IEnumerable<DataGridViewRow> a2 =
 mydgvrs.Where(row => row.Height > 0);

, которую отклоняет компилятор - "нет метода расширения Где ...можно найти "?

Что случилось?

1 Ответ

1 голос
/ 23 сентября 2011

Поскольку у вас есть тип, указанный в версии синтаксиса запроса.(DataGridViewRow в from DataGridViewRow row).

Для перевода вам понадобится Cast<T>:

IEnumerable<DataGridViewRow> a2 = mydgvrs.Cast<DataGridViewRow>()
                                         .Where(row => row.Height > 0);

Это необходимо, поскольку mydgvrs реализует IEnumerable, ноне IEnumerable<DataGridViewRow>.

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