● DataTableからレコードを抽出して並べ替えるサンプル

図 DataTableからレコードを抽出して並べ替えるサンプル
このサンプルは、得意先テーブルをDataTableに取り込んで抽出条件を指定してレコードを抽出して並べ替えします。レコードを抽出して並べ替えするには、DataTableのSelect()メッドを使用します。Select()メソッドの引数には、抽出条件と並べ替えするカラムを指定します。抽出条件は、SQLのWhere句と同じ書式で指定します。並べ替えするカラムは、SQLのOrder By句と同じ書式で指定します。実行結果として抽出したレコードを表示します。
このサンプルでは、以下のノウハウを習得することができます。
▲ 得意先テーブルをDataTableに取り込む方法
▲ DataTableから抽出条件と並べ替えするカラムを指定してレコードを抽出する方法
▲ DataTableのSelect()メソッドに抽出条件と並べ替えを指定する方法
▲ 抽出条件にワイルドカード(%)を指定する方法
サンプルのPage_Load()イベントでは、得意先テーブルをDataTableに取り込んで抽出条件と並べ替えのカラムを指定してレコードを抽出します。行8-9では、得意先テーブルからレコードを抽出するSQLを生成しています。行10-13では、OleDbConnection、OleDbDataAdapter、DataTableのインスタンスを生成しています。
行17では、OleDbDataAdapterのFill()メソッドで得意先テーブルをDataTableに取り込んでいます。行18では、DataTableのSelect()メソッドでレコードを抽出しています。Select()メソッドの引数には、抽出条件と並べ替えするカラムを指定しています。抽出条件としてContactTitle Like ’%長’を指定しています。この抽出条件は、役職に「長」が含まれる得意先を抽出することを意味します。並べ替えのカラムとしてKenを指定していますので、都道府県を昇順に並べ替えします。並べ替えのカラムにはオプションとして昇進(Asc)/降順(Desc)を指定することができます。オプションを省略したときは、昇順が採用されます。複数のカラムを指定するときは、コンマ(,)区切りで指定します。
dt.Select(“”, “Ken Asc, ContactTitle Desc”)
Select()メソッドの戻り値としてDataRowのコレクションが返されます。行20-22のFor Each…Nextでは、arrRo
7: Sub Page_Load()
8: Dim strSQL As String =
"Select CustomerID, CompanyName, " & _
9: "ContactName,
ContactTitle, Ken From Customers"
10: Dim con As New OleDbConnection( _
11:
ConfigurationSettings.AppSettings("conStringNw"))
12: Dim da As New
OleDbDataAdapter(strSQL, con)
13: Dim dt As New DataTable("Customers")
14: Dim dr As DataRow
15: Dim arrRo
16:
17: da.Fill(dt)
18: arrRo
19:
Response.Write("<h2>DataTable.Select(Sort
Order)</h2>")
20: For Each dr In arrRo
21: DisplayRow(dr)
22: Next
23: End Sub