Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Доступ к содержимому DataTable можно получить с помощью коллекций строк и столбцовDataTable. Можно также использовать Select метод для возврата подмножества данных в DataTable в соответствии с критериями, включая условия поиска, порядок сортировки и состояние строки. Кроме того, можно использовать Find метод DataRowCollection при поиске определенной строки с помощью значения первичного ключа.
Метод Select объекта DataTable возвращает набор DataRow объектов, которые соответствуют указанным критериям.
Выбор принимает необязательные аргументы выражения фильтра, выражения сортировки и DataViewRowState. Выражение фильтра определяет, какие строки возвращаются на основе значений DataColumn , таких как LastName = 'Smith'
. Выражение сортировки следует стандартным соглашениям SQL для упорядочивания столбцов, например LastName ASC, FirstName ASC
. Правила написания выражений см. в Expression свойстве класса DataColumn .
Подсказка
Если вы выполняете ряд вызовов метода Select объекта DataTable, вы можете повысить производительность, сначала создав DataView для DataTable. Создание DataView индексирует строки таблицы. Затем метод Select использует этот индекс, значительно сокращая время для создания результата запроса. Сведения о создании DataView для DataTable см. в разделе DataViews.
Метод Select определяет, какую версию строк просматривать или изменять, основываясь на DataViewRowState. В следующей таблице описаны возможные значения перечисления DataViewRowState .
Значение DataViewRowState | Описание |
---|---|
CurrentRows | Текущие строки, включая без изменений, добавленные и измененные строки. |
Удалено | Удаленная строка. |
ModifiedCurrent | Текущая версия, которая является измененной версией исходных данных. (См. ModifiedOriginal.) |
ИзмененныйОригинал | Исходная версия всех измененных строк. Текущая версия доступна с помощью ModifiedCurrent. |
Добавлено | Новая строка. |
Нет | Нет. |
OriginalRows | Исходные строки, включая неизмененные и удаленные строки. |
Неизменившийся | Неизмененная строка. |
В следующем примере объект DataSet фильтруется таким образом, чтобы вы работали только с строками, для которых для DataViewRowState задано значение 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);
}
}
Метод Select можно использовать для возврата строк с различными значениями RowState или значениями полей. В следующем примере возвращается массив DataRow, ссылающийся на все строки, которые были удалены, и возвращает другой массив DataRow, ссылающийся на все строки, упорядоченные по CustLName, где столбец CustID больше 5. Сведения о просмотре сведений в удаленной строке см. в разделе "Состояния строк" и "Версии строк".
' 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");