Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Доступ к содержимому DataTable можно получить с помощью коллекций Rows и ColumnsDataTable. Можно также использовать Select метод для возврата подмножества данных в DataTable соответствии с критериями, включая условия поиска, порядок сортировки и состояние строки. Вы также можете использовать метод Find в DataRowCollection при поиске конкретной строки по значению первичного ключа.
Метод SelectDataTable объекта возвращает набор DataRow объектов, которые соответствуют указанным критериям.
Select принимает необязательные аргументы выражения фильтра, выражения сортировки и DataViewRowState. Выражение фильтра определяет, какие строки возвращаются на основе значений DataColumn, таких как LastName = 'Smith'. Выражение сортировки следует стандартным соглашениям SQL для упорядочивания столбцов, например LastName ASC, FirstName ASC. Правила написания выражений см. в Expression свойстве DataColumn класса.
Подсказка
Если вы выполняете ряд вызовов Select метода DataTable, вы можете повысить производительность, сначала создав DataView для DataTable.
DataView Создание индексов строк таблицы. Затем Select метод использует этот индекс, значительно сокращая время для создания результата запроса. Сведения о создании DataViewтаблицы данных см. в разделе 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. Сведения о просмотре сведений в строке Deleted см. в разделе "Состояния строк" и "Версии строк".
' 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");