Freigeben über


Anzeigen von Daten in einer "DataTable"

Mithilfe der Rows-Auflistung und der Columns-Auflistung der DataTable können Sie auf die Inhalte einer DataTable zugreifen. Sie können auch die Select-Methode verwenden, um Teilmengen der Daten in einer DataTable anhand bestimmter Kriterien wie Suchkriterien, Sortierreihenfolge und Zeilenstatus zurückzugeben. Außerdem können Sie die Find-Methode der DataRowCollection verwenden, wenn Sie mithilfe eines Primärschlüsselwerts nach einer bestimmten Zeile suchen.

Die Select-Methode des DataTable-Objekts gibt eine Reihe von DataRow-Objekten zurück, die den angegebenen Kriterien entsprechen. Select akzeptiert optionale Argumente eines Filterausdrucks, eines Sortierausdrucks und von DataViewRowState. Der Filterausdruck identifiziert anhand von DataColumn-Werten wie z. B. LastName = 'Smith' die Zeilen, die zurückgegeben werden sollen. Der Sortierausdruck folgt den Standard-SQL-Konventionen für die Anordnung von Spalten, z. B. LastName ASC, FirstName ASC. Regeln für das Schreiben von Ausdrücken finden Sie in der Beschreibung der Expression-Eigenschaft der DataColumn-Klasse.

Tipp

Wenn Sie die Select-Methode einer DataTable mehrmals aufrufen möchten, können Sie die Leistung verbessern, indem Sie zuerst eine DataView für die DataTable erstellen. Durch das Erstellen der DataView werden die Zeilen der Tabelle indiziert. Die Select-Methode nutzt dann diesen Index, wodurch die Zeit zum Generieren des Abfrageergebnisses deutlich verkürzt wird. Weitere Informationen zum Erstellen einer DataView für eine DataTable finden Sie unter DataViews.

Die Select-Methode bestimmt anhand des DataViewRowState, welche Version der Zeilen angezeigt oder bearbeitet werden soll. In der folgenden Tabelle werden die möglichen DataViewRowState-Enumerationswerte aufgeführt.

"DataViewRowState"-Wert BESCHREIBUNG
CurrentRows Aktuelle Zeilen, einschließlich nicht geänderter, hinzugefügter und geänderter Zeilen.
Gelöscht Eine gelöschte Zeile.
ModifiedCurrent Eine aktuelle Version, die eine geänderte Version der ursprünglichen Daten darstellt. (Siehe ModifiedOriginal.)
ModifiedOriginal Die ursprüngliche Version aller geänderten Zeilen. Die aktuelle Version ist über ModifiedCurrent verfügbar.
Hinzugefügt Eine neue Zeile.
None Keine.
OriginalRows Ursprüngliche Zeilen, einschließlich nicht geänderter und gelöschter Zeilen.
Unverändert Eine nicht geänderte Zeile.

Im folgenden Beispiel ist das DataSet-Objekt gefiltert, sodass Sie nur mit Zeilen arbeiten, deren DataViewRowState auf CurrentRows festgelegt ist.

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);
  }
}

Mithilfe der Select-Methode können Zeilen mit abweichenden RowState-Werten oder Feldwerten zurückgegeben werden. Das folgende Beispiel gibt ein DataRow-Array zurück, das auf alle gelöschten Zeilen verweist. Es gibt auch ein weiteres DataRow-Array zurück, das geordnet nach CustLName auf alle Zeilen verweist, in denen die CustID-Spalte größer als 5 ist. Informationen zum Anzeigen der Informationen in der Zeile Deleted finden Sie unter Zeilenstatus und Zeilenversionen.

' 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");

Siehe auch