Запрос DataColumnCollection с помощью LINQ
Я пытаюсь выполнить простой запрос LINQ 9X_asqueryable для свойства Columns таблицы DataTable:
from c in myDataTable.Columns.AsQueryable() select c.ColumnName
Однако 9X_asqueryable я получаю следующее:
Не удалось найти реализацию 9X_datacolumncollection шаблона запроса для типа источника "System.Linq.IQueryable". «Выбрать» не 9X_datacolumncollection найдено. Рассмотрите возможность явного 9X_datacolumncollection указания типа переменной диапазона 'c'.
Как 9X_csharp заставить DataColumnCollection хорошо работать 9X_linq с LINQ?
Ответ #1
Ответ на вопрос: Запрос DataColumnCollection с помощью LINQ
Как насчет
var x = from c in dt.Columns.Cast() select c.ColumnName;
9X_visual-c#
- @Dave: Что в первую очередь вызывает эту п ...
Ответ #2
Ответ на вопрос: Запрос DataColumnCollection с помощью LINQ
Вы также можете использовать:
var x = from DataColumn c in myDataTable.Columns select c.ColumnName
Он будет фактически 9X_asqueryable делать то же самое, что и код Дейва: «в 9X_linq выражении запроса явно типизированная переменная 9X_linq итерации преобразуется в вызов Cast (IEnumerable)», согласно 9X_asqueryable статье Enumerable.Cast Method
MSDN.
Ответ #3
Ответ на вопрос: Запрос DataColumnCollection с помощью LINQ
С синтаксисом метода Linq:
var x = myDataTable.Columns.Cast().Select(c => c.ColumnName);
9X_asqueryable
-
21
-
2
-
2
-
5
-
3
-
6
-
1
-
7
-
3
-
2
-
2
-
4
-
2
-
3
-
3
-
3
-
3
-
2
-
5
-
2
-
2
-
3
-
7
-
2
-
2
-
3
-
2
-
2
-
1
-
6
-
18
-
5
-
4
-
11
-
22
-
3
-
4
-
5
-
2
-
3
-
4
-
5
-
9
-
4
-
2
-
2
-
13
-
19
-
9
-
15