Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können auf den Inhalt eines Elements DataTable zugreifen, indem Sie die Zeilen- und Spaltenauflistungen der DataTable verwenden. Sie können die Select Methode auch verwenden, um Teilmengen der Daten in einer DataTable gemäß Kriterien wie Suchkriterien, Sortierreihenfolge und Zeilenstatus zurückzugeben. Darüber hinaus 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 Gruppe von DataRow Objekten zurück, die den angegebenen Kriterien entsprechen.
Select verwendet optionale Argumente eines Filterausdrucks, sortierausdrucks und DataViewRowState. Der Filterausdruck gibt an, welche Zeilen basierend auf DataColumn-Werten zurückgegeben werden sollen, zum Beispiel LastName = 'Smith'
. Der Sortierausdruck folgt standardmäßigen SQL-Konventionen zum Sortieren von Spalten, z. B LastName ASC, FirstName ASC
. . Regeln zum Schreiben von Ausdrücken finden Sie in der Expression Eigenschaft der DataColumn-Klasse .
Tipp
Wenn Sie eine Reihe von Aufrufen der Select-Methode einer DataTable ausführen, können Sie die Leistung erhöhen, indem Sie zuerst eine DataView für die DataTable erstellen. Beim Erstellen der DataView werden die Zeilen der Tabelle indiziert. Die Select-Methode verwendet dann diesen Index, wodurch die Zeit zum Generieren des Abfrageergebnisses erheblich reduziert wird. Informationen zum Erstellen einer DataView für eine DataTable finden Sie unter DataViews.
Die Select-Methode bestimmt, welche Version der Zeilen angezeigt oder bearbeitet werden soll, basierend auf einem DataViewRowState. In der folgenden Tabelle werden die möglichen DataViewRowState-Enumerationswerte beschrieben.
"DataViewRowState"-Wert | BESCHREIBUNG |
---|---|
CurrentRows | Aktuelle Zeilen einschließlich unveränderter, hinzugefügter und geänderter Zeilen. |
Gelöscht | Eine gelöschte Zeile. |
ModifiedCurrent | Eine aktuelle Version, bei der es sich um eine geänderte Version von Originaldaten handelt. (Siehe ModifiedOriginal.) |
ModifiedOriginal | Die ursprüngliche Version aller geänderten Zeilen. Die aktuelle Version ist mit ModifiedCurrent verfügbar. |
Hinzugefügt | Eine neue Zeile. |
Nichts | Keiner. |
OriginalRows | Ursprüngliche Zeilen, einschließlich unveränderter und gelöschter Zeilen. |
Unverändert | Eine nicht geänderte Zeile. |
Im folgenden Beispiel wird das DataSet-Objekt so gefiltert, dass 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);
}
}
Die Select-Methode kann verwendet werden, um Zeilen mit unterschiedlichen RowState-Werten oder Feldwerten zurückzugeben. Im folgenden Beispiel wird ein DataRow-Array zurückgegeben, das auf alle zeilen verweist, die gelöscht wurden, und ein weiteres DataRow-Array zurück, das auf alle Zeilen verweist, sortiert nach CustLName, wobei die CustID-Spalte größer als 5 ist. Informationen zum Anzeigen der Informationen in der gelöschten Zeile finden Sie unter "Zeilenzustände" 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");