2013-12-22 4 views
-2

Почему не работает метод расширения AsEnumerable() в DataView?Метод расширения AsEnumerable() не работает в DataView

Когда вы инициализируете DataView с помощью определенного DataTable, почему вы не можете запросить его для хранения результата в общей коллекции?

Я хочу сделать что-то вроде этого:

DataView dv = new DataView(ds.Tables[0]); 

List<String> li = (from row in dv.AsEnumerable select row).ToList(); 
+3

Пожалуйста, покажите нам код, который вы пробовали. –

+0

DataView dv = новый DataView (ds.Tables [0]); Список li = (из строки в dv.AsEnumerable select row) .ToList(); – nakkulable

+0

Как вы отметили сами, для вызова метода вам нужны скобки. – BartoszKP

ответ

3

AsEnumerable() метод расширения может быть использован на любом типе, который реализует IEnumerable<T>. DataView не реализует IEnumerable<T>, он просто реализует IEnumerable. Поскольку вы знаете, что все детали будут DataRowView объекты, вы можете использовать Cast<T>(), например, так:

List<DataRowView> li = (from row in dv.Cast<DataRowView>() select row).ToList(); 

Обратите внимание, что поскольку у вас есть select row список тип элемента DataRowView, не string.

Вы также можете написать его, указав тип row в явном виде, например, так:

List<DataRowView> li = (from DataRowView row in dv select row).ToList(); 
Смежные вопросы