LINQ-запрос к DataTable - PullRequest
       155

LINQ-запрос к DataTable

959 голосов
/ 14 августа 2008

Я пытаюсь выполнить запрос LINQ к объекту DataTable, и странным образом обнаруживаю, что выполнение таких запросов к объектам DataTable не является простым. Например:

var results = from myRow in myDataTable
where results.Field("RowNo") == 1
select results;

Это не разрешено. Как мне заставить что-то подобное работать?

Я поражен, что запросы LINQ не разрешены в DataTables!

Ответы [ 21 ]

5 голосов
/ 03 ноября 2013

Вы можете заставить его работать элегантно через linq, как это:

from prod in TenMostExpensiveProducts().Tables[0].AsEnumerable()
where prod.Field<decimal>("UnitPrice") > 62.500M
select prod

Или как динамический linq this (AsDynamic вызывается непосредственно в DataSet):

TenMostExpensiveProducts().AsDynamic().Where (x => x.UnitPrice > 62.500M)

Я предпочитаю последний подход, пока он самый гибкий. П.С .: Не забудьте подключить System.Data.DataSetExtensions.dll ссылка

...