Запрос DataColumnCollection с LINQ

Я пытаюсь выполнить простой запрос LINQ в свойстве Columns DataTable:

from c in myDataTable.Columns.AsQueryable()
    select c.ColumnName

Однако я получаю следующее:

Не удалось найти реализацию шаблона запроса для типа источника 'System.Linq.IQueryable'. "Выбрать" не найдено. Рассмотрим явно задание типа переменной диапазона 'c'.

Как я могу заставить DataColumnCollection играть хорошо с LINQ?

Ответ 1

Как насчет:

var x = from c in dt.Columns.Cast<DataColumn>()
        select c.ColumnName;

Ответ 2

Вы также можете использовать:

var x = from DataColumn c in myDataTable.Columns
        select c.ColumnName

Он будет эффективно выполнять те же действия, что и код Дэйва: "в выражении запроса явная типизированная переменная итерации переводит на вызов Cast (IEnumerable)", в соответствии с Enumerable.Cast<TResult> Method Статья в MSDN.