Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
K obsahu DataTable můžete přistupovat pomocí kolekcí Rows a Columns z DataTable. Můžete také použít metodu Select k vrácení podmnožin dat v DataTable podle kritérií, včetně kritérií hledání, pořadí řazení a stavu řádku. Kromě toho můžete při hledání konkrétního řádku podle hodnoty primárního klíče použít metodu FindDataRowCollection.
Metoda Select objektu DataTable vrátí sadu DataRow objektů, které odpovídají zadaným kritériím.
Select přebírá volitelné argumenty výrazu filtru, výrazu řazení a DataViewRowState. Výraz filtru identifikuje řádky, které se mají vrátit podle hodnot DataColumn, například LastName = 'Smith'. Výraz řazení se řídí standardními konvencemi SQL pro řazení sloupců, například LastName ASC, FirstName ASC. Pravidla pro psaní výrazů naleznete ve Expression vlastnosti DataColumn třídy.
Návod
Pokud provádíte řadu volání Select metody DataTable, můžete zvýšit výkon tak, že nejprve vytvoříte DataView pro DataTable. Vytvoření DataView indexuje řádky tabulky. Tato Select metoda pak tento index použije, což výrazně zkracuje dobu pro vygenerování výsledku dotazu. Informace o vytvoření DataView pro DataTable naleznete v tématu DataViews.
Metoda Select určuje, kterou verzi řádků zobrazit nebo s ní manipulovat na základě DataViewRowState. Následující tabulka popisuje možné DataViewRowState hodnoty výčtu.
| Hodnota DataViewRowState | Popis |
|---|---|
| CurrentRows | Aktuální řádky včetně nezměněných, přidaných a upravených řádků |
| Odstraněno | Odstraněný řádek. |
| ModifiedCurrent | Aktuální verze, což je upravená verze původních dat. (Viz ModifiedOriginal.) |
| UpravenýOriginál | Původní podoba všech změněných řádků. Aktuální verze je k dispozici pomocí ModifiedCurrent. |
| Přidán | Nový řádek. |
| Nic | Žádné. |
| OriginalRows | Původní řádky, včetně nezměněných a odstraněných řádků |
| Nezměněný | Nezměněný řádek. |
V následujícím příkladu DataSet je objekt filtrován, takže pracujete pouze s řádky, jejichž DataViewRowState je nastavena na CurrentRows.
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);
}
}
Metodu Select lze použít k vrácení řádků s různými RowState hodnotami nebo hodnotami polí. Následující příklad vrátí DataRow matici, která odkazuje na všechny řádky, které byly odstraněny, a vrátí další DataRow matici, která odkazuje na všechny řádky seřazené podle CustLName, kde CustID sloupec je větší než 5. Informace o tom, jak zobrazit informace v Deleted řádku, naleznete v tématu Stavy řádků a verze řádků.
' 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");