Преобразование DataView в DataTable

В .NET 2.0 появилось заметное усовершенствование: в класс DataView добавлен метод ТоТаЫе, который позволяет легко создать новый DataTable из строк, доступных в DataView. Это очень удобно при выборке множества строк из DataTable в виде нового меньшего объекта Datalanle. Его использование не должно вызвать затруднений:

C#

DataTable cust^rodTable = DataSetFiller. ’’i.llDazaset {dataFilePath) .Tables (2); DataView view — new DataView; c:us LProdTabieJ;

‘Xita’i'able subsetTable — v.e«.ТоТаЫе [?<'

DalaTable bubserTasle - vi ew ЛoTable '"TableKarre" ] ;

VB.NET

Dim custP-odTable As DataIc.Dle = _

DatabetFiiler.FillDatabot(aalat’ilePath) .Tables (2)

Dim view as DataView — New DataView(custProdlable) view.Row’F’.i )tpr — «ProductID > 2″

Din subsetTable as DataTable = v_ew.ToTable {)

Dur. sibssz.Tdble as DataTable = vien’.-OTable {«TableNarae»)

Любой из этих способов создает объект DataTabl е с тем же количеством столбцов. что и в исходном Dal aTable. Однако имеется другой перегруженный вариант, позволяющий ограничить количество столбцов, которые возвращаются в наборе результатов.

Этот метод очень полезен для поиска отдельных наборов данных — аналогично ключевому славу DISTINCT в SQL. Например, если нужно найти отдельные ProductID в таблице CustomerProducts, то эго можно легко сделать с помощью следующего фрагмента кода (обратите внимание, что первый параметр метода ToTable указывает, что результирующий DataTable должен содержать отдельные строки):

C#

DaraTab;e custProd’Iable — DataSctFiller .FillDataset (dacaFi 1 eParh) .Tab! es (2); DataView view = qew DataV.iewl ci;stProdTable] ; view.Sown iter — «ProductID > 2″;

DataTable subsetTable = vis».ToTable [true,"?roductID" ;;

VB.NET

Dirr custProd'Iable As DataTabl» =

DataSetFiller.FillDataset(datsFilctatl )-Tables(2)

Dim view as DataView = ’New DataView(cjstPrcaTaale) view.Sowril-.er = "ProductID > 2"

Jin subsetTable as DataTable - view.To'J’sbie(True,"ProductID")

Конечно, как видите, можно применить и перегруженный вариант, если нужно извлечь DataTable с количеством столбцов, меньшим, чем в исходном объекте. Это можно сделать, указав в первом параметре false, что означает, что отдельные строки не запрашиваются:

С#

DataTable custProdTable - DataSott'iller .FillDataser (dataFilePath) .Tables (2); DataView view = new DataView[custProdTable]; view.RowFilter — «ProductlD > 2

DataTable subsetlable = vicw.ToTasle [false, "CustoreerlD", "ProductlD"]; VB.NET

Dim custProdTable As DataTable =

DataSetFiller.FillDataset(dataFilePath).Tables(2)

Dim view as DataView — New DataView(custProdTable) view.RowFilter = «ProductlD > 2″

Dim subsetTable as Dar.a’Iable -

view.ToSable(False, «CustomerlD», «ProductlD»)

В сфере применения компьютеров повсеместно принят язык обмена данными, который используется в большинстве платформ и языков программирования — XML. Его также называют “lingua franca” компьютерного мира. Как уже было показано в предыдущих главах, автономные объекты данных, а именно объекты DataSet и DataTabl е, обеспечивают легкую работу с XML.

Related posts:

Сортировка, поиск и фильтрация
Выражения: вычисление столбцов на ходу
Создание объекта DataView
Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий