-
Notifications
You must be signed in to change notification settings - Fork 18
資料表 Data Table
假設 dt_DataTable 變數為下列資料表:
Column1 | Column2 | Column3 |
---|---|---|
B | 3 | True |
A | 2 | True |
E | 2 | False |
C | 4 | True |
D | 5 | True |
A | 1 | False |
- 取得資料表的欄位名稱 Get the column names of DataTable
e.g. 取得上列 dt_DataTable 的欄位名稱:
arr_ColumnNames =
(From dc In dt_DataTable.Columns.Cast(Of DataColumn) Select dc.ColumnName).ToArray
- 變更資料表的欄位名稱 Rename a column name of DataTable
e.g. 將上列 dt_DataTable 的 "Column1" 欄位變更欄名成 "Name":
dt_DataTable.Columns("Column1").ColumnName
= "Name"
Name Column2 Column3 B 3 True A 2 True E 2 False C 4 True D 5 True A 1 False
- 取得資料表的第一筆資料 Get the first row in the DataTable
e.g. 取得上列 dt_DataTable 的第一筆資料:
dr_FirstRow =
dt_DataTable.Rows(0)
arr_FirstRow = dr_FirstRow.ItemArray
註 : dr_FirstRow 的資料型態為 DataRow,透過.ItemArray
轉換成陣列。
- 取得資料表中某一個欄位的資料 Get one column in DataTable and convert it to Array
e.g. 取得上列 dt_DataTable 中 "Column1" 欄位資料且轉成陣列型態:
arr_ColumnData =
dt_DataTable.AsEnumerable().Select( Function(x) x.Field(Of String)("Column1").ToString ).ToArray
arr_ColumnData = string[6] { "B", "A", "E", "C", "D", "A" }
- 取得資料表中部份欄位的資料 Get the partial columns in DataTable
e.g. 取得上列 dt_DataTable 中 "Column1" 及 "Column3" 欄位中的資料:
dt_Subtable =
New DataView( dt_DataTable ).ToTable( False, {"Column3","Column1"} )
dt_Subtable =
Column3 Column1 True B True A False E True C True D False A
- 濾出資料表中滿足特定條件的資料 Filter DataTable
e.g. 篩選出 dt_DataTable 中 "Column2" 欄位大於 3 的資料:
dt_FilterData =
dt_DataTable.AsEnumerable().Where( function(r) Convert.ToInt32(r("Column2")) > 3 ).CopyToDataTable
dt_FilterData =
Column1 Column2 Column3 C 4 True D 5 True
- 特定欄位排序 Sort the DataTable based on specific column
e.g. 對 dt_DataTable 中的 "Column1" 欄位進行排序(由小到大):
dt_SortData =
(From row In dt_DataTable.Select Order By row("Column1") Select row).ToArray.CopyToDatatable
或
dt_SortData =New DataView( dt_DataTable, "True", "Column1 asc", DataViewRowState.CurrentRows ).ToTable
dt_SortData =
Column1 Column2 Column3 A 2 True A 1 False B 3 True C 4 True D 5 True E 2 False e.g. 對 dt_DataTable 中的 "Column2" 欄位進行排序(由小到大):
dt_SortData =
(From row In dt_DataTable.Select Order By row("Column2") Select row).ToArray.CopyToDatatable
或
dt_SortData =New DataView( dt_DataTable, "True", "Column2 asc", DataViewRowState.CurrentRows ).ToTable
dt_SortData =
Column1 Column2 Column3 A 1 False A 2 True E 2 False B 3 True C 4 True D 5 True e.g. 對 dt_DataTable 中的 "Column2" 欄位進行排序(由小到大)後,且僅取出 "Column1" 的資料:
dt_SortData =
New DataView( dt_DataTable, "True", "Column2 asc", DataViewRowState.CurrentRows ).ToTable( False, {"Column1"} )
dt_SortData =
Column1 A A E B C D 若須排除重覆的資料
dt_SortData =New DataView( dt_DataTable, "True", "Column2 asc", DataViewRowState.CurrentRows ).ToTable( True, {"Column1"} )
dt_SortData =
Column1 A E B C D e.g. 先對 dt_DataTable 中的 "Column1" 欄位進行排序(由小到大),再對 "Column2" 欄位進行排序(由大到小):
dt_SortData =
(From row In dt_DataTable.AsEnumerable() Order By row("Column1"), row("Column2") Descending Select row).CopyToDataTable
或
dt_SortData =New DataView( dt_DataTable, "True", "Column1 asc, Column2 desc", DataViewRowState.CurrentRows ).ToTable
dt_SortData =
Column1 Column2 Column3 A 2 True A 1 False B 3 True C 4 True D 5 True E 2 False