Anzeigen von Daten in einer Tabelle
Auf den Inhalt einer DataTable kann mit Hilfe der Rows-Auflistung und der Columns-Auflistung der DataTable zugegriffen werden. Die DataTable.Select-Methode kann auch verwendet werden, um Teilmengen der Daten in einer DataTable gemäß bestimmten Kriterien zurückzugeben, z. B. Suchkriterien, Sortierreihenfolge und Zeilenstatus. Außerdem können Sie die Find-Methode der DataRowCollection verwenden, wenn Sie mit Hilfe eines Primärschlüsselwerts nach einer bestimmten Zeile suchen.
Die Select-Methode des DataTable-Objekts gibt einen Satz DataRow-Objekte zurück, die die angegebenen Kriterien erfüllen. Select erhält optionale Argumente eines Filterausdrucks, eines Sortierausdrucks und von DataViewRowState. Der Filterausdruck gibt anhand von DataColumn-Werten, z. B. LastName = 'Smith'
, an, welche Zeilen zurückgegeben werden sollen. Der Sortierausdruck folgt den Standard-SQL-Konventionen für die Anordnung von Spalten, z. B. LastName ASC, FirstName ASC
. Die Regeln für das Schreiben von Ausdrücken werden unter der Expression-Eigenschaft der DataColumn-Klasse beschrieben.
**Tipp **Wenn Sie vorhaben, eine Reihe von Aufrufen der Select-Methode einer DataTable auszuführen, können Sie eine Leistungssteigerung erzielen, indem Sie zuerst eine DataView für die DataTable erstellen. Durch Erstellen der DataView werden die Zeilen der Tabelle indiziert. Die Select-Methode nutzt dann diesen Index, wodurch die Zeit, die die Generierung des Abfrageergebnisses in Anspruch nimmt, deutlich verkürzt wird. Weitere Informationen zum Erstellen einer DataView für eine DataTable finden Sie unter Erstellen und Verwenden von DataViews.
Die Select-Methode bestimmt anhand eines DataViewRowState, welche Version der Zeilen angezeigt oder bearbeitet werden soll. In der folgenden Tabelle sind die möglichen DataViewRowState-Enumerationswerte aufgelistet.
Membername | Beschreibung |
---|---|
CurrentRows | Aktuelle Zeilen, einschließlich nicht geänderte, hinzugefügte und geänderte Zeilen. |
Deleted | Eine gelöschte Zeile. |
ModifiedCurrent | Eine aktuelle Version, die eine modifizierte Version der ursprünglichen Daten ist. (Siehe ModifiedOriginal.) |
ModifiedOriginal | Die ursprüngliche Version aller geänderten Zeilen. Die aktuelle Version kann über ModifiedCurrent abgerufen werden. |
Added | Eine neue Zeile. |
None | Keine. |
OriginalRows | Ursprüngliche Zeilen, einschließlich nicht geänderte und gelöschte Zeilen. |
Unchanged | Eine nicht geänderte Zeile. |
Im folgenden Beispiel wird das DataSet-Objekt gefiltert, so dass nur Zeilen verwendet werden, deren DataViewRowState auf CurrentRows gesetzt ist.
Dim myCol As DataColumn
Dim myRow As DataRow
Dim currRows() As DataRow = workTable.Select(Nothing, Nothing, DataViewRowState.CurrentRows)
If (currRows.Length < 1 ) Then
Console.WriteLine("No Current Rows Found")
Else
For Each myCol in workTable.Columns
Console.Write(vbTab & myCol.ColumnName)
Next
Console.WriteLine(vbTab & "RowState")
For Each myRow In currRows
For Each myCol In workTable.Columns
Console.Write(vbTab & myRow(myCol).ToString())
Next
Dim rowState As String = System.Enum.GetName(myRow.RowState.GetType(), myRow.RowState)
Console.WriteLine(vbTab & rowState)
Next
End If
[C#]
DataRow[] currRows = workTable.Select(null, null, DataViewRowState.CurrentRows);
if (currRows.Length < 1 )
Console.WriteLine("No Current Rows Found");
else
{
foreach (DataColumn myCol in workTable.Columns)
Console.Write("\t{0}", myCol.ColumnName);
Console.WriteLine("\tRowState");
foreach (DataRow myRow in currRows)
{
foreach (DataColumn myCol in workTable.Columns)
Console.Write("\t{0}", myRow[myCol]);
Console.WriteLine("\t" + myRow.RowState);
}
}
Mit Hilfe der Select-Methode können Zeilen mit abweichenden RowState-Werten oder Feldwerten zurückgegeben werden. Im folgenden Beispiel wird ein DataRow-Array zurückgegeben, das auf alle Zeilen verweist, die gelöscht wurden, sowie ein weiteres DataRow-Array zurückgegeben, das auf alle Zeilen verweist (nach CustLName sortiert), in denen die CustID-Spalte einen Wert größer als 5 hat. Weitere Informationen dazu, wie Sie die Informationen in der Deleted-Zeile anzeigen, finden Sie unter Zeilenstatus und Zeilenversion.
' Retrieve all deleted rows.
Dim delRows() 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")
[C#]
// Retrieve all deleted rows.
DataRow[] delRows = 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
Bearbeiten von Daten in einer Datentabelle | Zeilenstatus und Zeilenversion | DataRow-Klasse | DataSet-Klasse | DataTable-Klasse | DataViewRowState-Enumeration