次の方法で共有


DataTable でのデータの表示

DataTableRows コレクションと Columns コレクションを使用して、の内容にアクセスできます。 Select メソッドを使用して、検索条件、並べ替え順序、行の状態などの条件に従って DataTable 内のデータのサブセットを返すこともできます。 さらに、主キー値を使用して特定の行を検索するときにFind メソッドを使用できます。

DataTable オブジェクトの Select メソッドは、指定した条件に一致する一連のDataRowオブジェクトを返します。 Select は、フィルター式、並べ替え式、および DataViewRowState の省略可能な引数を受け取ります。 フィルター式は、 dataColumn 値に基づいて返す行 ( LastName = 'Smith'など) を識別します。 並べ替え式は、 LastName ASC, FirstName ASCなど、列の並べ替えに関する標準的な SQL 規則に従います。 式の記述に関する規則については、Expression クラスの プロパティを参照してください。

ヒント

DataTable の Select メソッドを多数呼び出す場合は、まず DataTableDataView を作成することで パフォーマンスを向上させることができます。 DataView を作成すると、テーブルの行にインデックスが作成されます。 その後 、Select メソッドはそのインデックスを使用し、クエリ結果を生成する時間を大幅に短縮します。 DataTable の DataView の作成の詳細については、「DataViews」を参照してください。

Select メソッドは、DataViewRowStateに基づいて表示または操作する行のバージョンを決定します。 次の表では、使用可能な DataViewRowState 列挙値について説明します。

DataViewRowState の値 説明
CurrentRows 変更されていない行、追加された行、変更された行を含む現在の行。
削除 削除された行。
ModifiedCurrent 現在のバージョン。元のデータの変更されたバージョンです。 ( ModifiedOriginal を参照)。
ModifiedOriginal 変更されたすべての行の元のバージョン。 現在のバージョンは ModifiedCurrent を使用して使用できます。
"追加" 新しい行。
なし なし。
OriginalRows 変更されていない行や削除された行を含む、元の行。
変更なし 変更されていない行。

次の例では、 DataSet オブジェクトがフィルター処理され、 DataViewRowStateCurrentRows に設定されている行のみを操作しています。

Dim column As DataColumn
Dim row As DataRow

Dim currentRows() As DataRow = _
    workTable.Select(Nothing, Nothing, DataViewRowState.CurrentRows)

If (currentRows.Length < 1 ) Then
  Console.WriteLine("No Current Rows Found")
Else
  For Each column in workTable.Columns
    Console.Write(vbTab & column.ColumnName)
  Next

  Console.WriteLine(vbTab & "RowState")

  For Each row In currentRows
    For Each column In workTable.Columns
      Console.Write(vbTab & row(column).ToString())
    Next

    Dim rowState As String = _
        System.Enum.GetName(row.RowState.GetType(), row.RowState)
    Console.WriteLine(vbTab & rowState)
  Next
End If
DataRow[] currentRows = workTable.Select(
    null, null, DataViewRowState.CurrentRows);

if (currentRows.Length < 1 )
  Console.WriteLine("No Current Rows Found");
else
{
  foreach (DataColumn column in workTable.Columns)
    Console.Write("\t{0}", column.ColumnName);

  Console.WriteLine("\tRowState");

  foreach (DataRow row in currentRows)
  {
    foreach (DataColumn column in workTable.Columns)
      Console.Write("\t{0}", row[column]);

    Console.WriteLine("\t" + row.RowState);
  }
}

Select メソッドを使用すると、RowState 値またはフィールド値が異なる行を返すことができます。 次の例では、削除されたすべての行を参照する DataRow 配列を返し、CustLName で並べ替えられたすべての行を参照する別の DataRow 配列を返します。CustID 列は 5 を超えています。 [削除済み] 行の情報を表示する方法については、「行の状態と行のバージョン」を参照してください。

' Retrieve all deleted rows.
Dim deletedRows() As DataRow = workTable.Select(Nothing, Nothing, DataViewRowState.Deleted)

' Retrieve rows where CustID > 5, and order by CustLName.
Dim custRows() As DataRow = workTable.Select( _
    "CustID > 5", "CustLName ASC")
// Retrieve all deleted rows.
DataRow[] deletedRows = workTable.Select(
    null, null, DataViewRowState.Deleted);

// Retrieve rows where CustID > 5, and order by CustLName.
DataRow[] custRows = workTable.Select("CustID > 5", "CustLName ASC");

こちらも参照ください