Запрос DataColumnCollection с помощью LINQ

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

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

Однако то, что я получаю, это:

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

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

3 ответа

Решение

Как насчет:

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

С синтаксисом метода Linq:

var x = myDataTable.Columns.Cast<DataColumn>().Select(c => c.ColumnName);

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

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

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

Другие вопросы по тегам