Запрос DataColumnCollection с помощью LINQ - PullRequest
66 голосов
/ 26 октября 2008

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

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

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

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

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

Ответы [ 3 ]

110 голосов
/ 26 октября 2008

Как насчет:

var x = from c in dt.Columns.Cast<DataColumn>()
        select c.ColumnName;
12 голосов
/ 03 апреля 2012

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

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

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

6 голосов
/ 15 марта 2018

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

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