Visar data i en datatabell

Du kan komma åt innehållet i en DataTable genom att använda Rows- och Columns-samlingarna i DataTable. Du kan också använda Select metoden för att returnera delmängder av data i en DataTable enligt villkor, inklusive sökvillkor, sorteringsordning och radtillstånd. Dessutom kan du använda Find-metoden av DataRowCollection när du söker efter en viss rad med hjälp av ett primärnyckelvärde.

- Select metoden för DataTable objektet returnerar en uppsättning DataRow objekt som matchar de angivna kriterierna. Select tar valfria argument för ett filteruttryck, sorteringsuttryck och DataViewRowState. Filteruttrycket identifierar vilka rader som ska returneras baserat på DataColumn värden, till exempel LastName = 'Smith'. Sorteringsuttrycket följer SQL-standardkonventioner för att sortera kolumner, till exempel LastName ASC, FirstName ASC. Regler för att skriva uttryck finns i Expression egenskapen för DataColumn klassen.

Tips/Råd

Om du utför ett antal anrop till Select metoden för en DataTable kan du öka prestandan genom att först skapa en DataView för DataTable. Skapa DataView indexerar raderna i tabellen. Metoden Select använder sedan det indexet, vilket avsevärt minskar tiden för att generera frågeresultatet. Information om hur du skapar en DataView för en DataTable finns i DataViews.

Metoden Select avgör vilken version av raderna som ska visas eller manipuleras baserat på en DataViewRowState. I följande tabell beskrivs möjliga DataViewRowState uppräkningsvärden.

DataViewRowState-värde Beskrivning
CurrentRows Aktuella rader, inklusive oförändrade, tillagda och ändrade rader.
Borttagen En borttagen rad.
ModifiedCurrent En aktuell version, som är en modifierad version av ursprungliga data. (Se ModifiedOriginal.)
ÄndradOriginal Den ursprungliga versionen av alla ändrade rader. Den aktuella versionen är tillgänglig med ModifiedCurrent.
Tillade En ny rad.
Ingen Ingen.
OriginalRows Ursprungliga rader, inklusive oförändrade och borttagna rader.
Oförändrad En oförändrad rad.

I följande exempel DataSet filtreras objektet så att du bara arbetar med rader vars DataViewRowState är inställt på 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);
  }
}

Metoden Select kan användas för att returnera rader med olika RowState värden eller fältvärden. I följande exempel returneras en DataRow matris som refererar till alla rader som har tagits bort och returnerar en annan DataRow matris som refererar till alla rader, ordnade efter CustLName, där CustID kolumnen är större än 5. Information om hur du visar informationen på raden finns i DeletedRadtillstånd och Radversioner.

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

Se även