■■■

2016年4月6日水曜日

データテーブルから特定条件に合致するデータ行だけ抜き出す方法

データテーブルから特定条件に合致するデータ行だけ抜き出してRow配列に格納する方法

VB.NET

      '仮データテーブル作成
      Dim table As New DataTable("tb001")
      table.Columns.Add("ID", GetType(Int32))
      table.Columns.Add("QUANTY", GetType(Int32))
      table.Columns.Add("NAME", GetType(String))
      table.Columns.Add("DATE", GetType(DateTime))

      Dim newRow As DataRow = table.NewRow()
      newRow("ID") = 1
      newRow("QUANTY") = 3      newRow("NAME") = "会社名1"      newRow("DATE") = "1979, 1, 31"
      ' データを追加
      table.Rows.Add(newRow)

      Dim newRow2 As DataRow = table.NewRow()
      newRow2("ID") = 2      newRow2("QUANTY") = 2      newRow2("NAME") = "会社名2"      table.Rows.Add(newRow2)

      Dim newRow3 As DataRow = table.NewRow()
      newRow3("ID") = 3      newRow3("QUANTY") = 2      newRow3("NAME") = "会社名3"      table.Rows.Add(newRow3)

      ' 日付とOrderIDを抽出条件とする
      Dim expression As String = "DATE = '1/31/1979' or ID = 2"
      ' NAMEでソートする(ソートしない場合はNothing)      Dim sortOrder As String = "NAMEASC"      Dim foundRows As DataRow()

      ' 上記の条件でRowsを抽出
      foundRows = table.Select(expression, sortOrder)

      ' 抽出したデータを表示
      For i As Integer = 0 To foundRows.Length - 1
         Console.WriteLine(foundRows(i)(2))
      Next

C#

      // 仮テーブル作成
      DataTable table = new DataTable("Orders");
      table.Columns.Add("OrderID", typeof(Int32));
      table.Columns.Add("QUANTY", typeof(Int32));      table.Columns.Add("NAME", typeof(string));            table.Columns.Add("DATE", typeof(DateTime));
      DataRow newRow = table.NewRow();
      newRow["ID"] = 1;      newRow["QUANTY"] = 3;      newRow["NAME"] = "NewCompanyName";      newRow["DATE"] = "1979, 1, 31";
      // データを追加
      table.Rows.Add(newRow);

      DataRow newRow2 = table.NewRow();
      newRow2["ID"] = 2;      newRow2["QUANTY"] = 2;      newRow2["NAME"] = "NewCompanyName1";      table.Rows.Add(newRow2);

      DataRow newRow3 = table.NewRow();
      newRow3["ID"] = 3;      newRow3["QUANTY"] = 2;      newRow3["NAME"] = "NewCompanyName2";      table.Rows.Add(newRow3);

      // 日付とOrderIDを条件に抽出
      string expression = "DATE = '1/31/1979' or ID= 2";
      // NAMEでソート(ソートしない場合はNull).      string sortOrder = "NAMEASC";      DataRow[] foundRows;

      // 上記の条件で抽出する方法
      foundRows = table.Select(expression, sortOrder);

      // 抽出データを表示
      for (int i = 0; i < foundRows.Length; i++)
         Console.WriteLine(foundRows[i][2]);





■■■