Запрос 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.