datatable c select примеры

После получения данных из базы данных через SqlDataAdapter в DataSet мы можем локально работать с этими данными вне зависимости от наличия подключения. Более того если нам даже и не надо использовать никакую базу данных, но при этом мы хотим иметь удобный функционал для работы с данными в виде наборов таблиц, то мы также можем воспользоваться классом DataSet.

Объект DataSet содержит таблицы, которые представлены типом DataTable . Таблица, в свою очередь, состоит из столбцов и строк. Каждый столбец представляет объект DataColumn , а строка — объект DataRow . Все данные строки хранятся в свойстве ItemArray , который представляет массив объектов — значений отдельных ячеек строки. Например, получим все таблицы и выведем их содержимое:

Теперь рассмотрим, как мы можем работать с объектами DataSet и DataTable без какой-либо базы данных. Например, создадим вручную в DataSet несколько таблиц и определим их структуру:

Разберем весь код. Сначала создаются объекты DataSet и DataTable, в конструктор которых передается название. Затем создается четыре столбца. Каждый столбец в конструкторе принимает два параметра: имя столбца и его тип.

Причем для столбца Id устанавливается, что значения этого столбца должны иметь уникальное значение, не должны принимать null, и их значение при добавлении нового объекта будет инкрементироваться на единицу. То есть фактически это стандартный столбец Id, как в большинстве баз данных.

Далее создается еще три столбца, при этом для столбца Discount устанавливается свойство Expression , указывающее на выражение, которое будет использоваться для вычисления значения столбца:

То есть в данном случае значение столбца Discount равно значению столбца Price, помноженного на 0.2.

Затем устанавливается первичный ключ для таблицы с помощью свойства PrimaryKey:

В роли первичного ключа выступает столбец Id. Но мы также можем использовать набор различных столбцов для создания составного ключа.

После определения схемы таблицы в нее добавляются две строки:

Значения в метод booksTable.Rows.Add можно передать как напрямую в виде массива объектов, так и в виде объекта DataRow. При этом нам надо передать ровно столько значений, сколько в таблице столбцов. Однако поскольку первый столбец Id устанавливается через автоинкремент, мы можем передать значение null — оно все равно будет игнорироваться. Также мы можем опустить последний параметр для столбца Discount, так как его значение вычисляется с помощью выражения «Price * 0.2». Более того мы даже можем опустить значение для третьего столбца Price, так как у него установлено свойство DefaultValue , которое устанавливает значение по умолчанию, если значение отсутствует:

И в конце идет перебор строк таблицы.

Кроме добавления мы можем производить и другие операции со строками. Например, мы можем получить строку по индексу:

Получив строку по индексу, можно изменить ее ячейки:

И также можно удалять строку:

Используя метод Select() объекта DataTable мы легко можем найти строки, которые соответствуют определенному критерию. Например, получим строки, в которых цена больше 120:

Определение

Получает массив объектов DataRow. Gets an array of DataRow objects.

Перегрузки

Получает массив всех объектов DataRow. Gets an array of all DataRow objects.

Получает массив всех объектов DataRow, отвечающих условиям фильтра. Gets an array of all DataRow objects that match the filter criteria.

Получает массив всех объектов DataRow, отвечающих условиям фильтра, согласно указанному порядку сортировки. Gets an array of all DataRow objects that match the filter criteria, in the specified sort order.

Получает массив всех объектов DataRow, отвечающих условиям фильтра, согласно порядку сортировки, соответствующему указанному состоянию. Gets an array of all DataRow objects that match the filter in the order of the sort that match the specified state.

Select()

Получает массив всех объектов DataRow. Gets an array of all DataRow objects.

Возвраты

Массив объектов DataRow. An array of DataRow objects.

Примеры

В следующем примере возвращается массив DataRow объектов Select с помощью метода. The following example returns an array of DataRow objects through the Select method.

Комментарии

Чтобы обеспечить правильный порядок сортировки, укажите критерии сортировки с помощью Select(String, String) или Select(String, String, DataViewRowState). To ensure the proper sort order, specify sort criteria with Select(String, String) or Select(String, String, DataViewRowState).

Дополнительно

Select(String)

Получает массив всех объектов DataRow, отвечающих условиям фильтра. Gets an array of all DataRow objects that match the filter criteria.

Параметры

Условия фильтрации строк. The criteria to use to filter the rows. Примеры по фильтрации строк см. в разделе Синтаксис DataView RowFilter [C#]. For examples on how to filter rows, see DataView RowFilter Syntax [C#].

Возвраты

Массив объектов DataRow. An array of DataRow objects.

Примеры

В следующем примере используется критерий фильтра для возврата массива DataRow объектов. The following example uses a filter expression to return an array of DataRow objects.

Комментарии

Чтобы создать filterExpression аргумент, используйте те же правила, которые применяются DataColumn к значению Expression свойства класса для создания фильтров. To create the filterExpression argument, use the same rules that apply to the DataColumn class’s Expression property value for creating filters.

Чтобы обеспечить правильный порядок сортировки, укажите критерии сортировки с помощью Select(String, String) или Select(String, String, DataViewRowState). To ensure the proper sort order, specify sort criteria with Select(String, String) or Select(String, String, DataViewRowState).

Если столбец в фильтре содержит значение null, он не будет частью результата. If the column on the filter contains a null value, it will not be part of the result.

Дополнительно

Select(String, String)

Получает массив всех объектов DataRow, отвечающих условиям фильтра, согласно указанному порядку сортировки. Gets an array of all DataRow objects that match the filter criteria, in the specified sort order.

Параметры

Условия фильтрации строк. The criteria to use to filter the rows. Примеры по фильтрации строк см. в разделе Синтаксис DataView RowFilter [C#]. For examples on how to filter rows, see DataView RowFilter Syntax [C#].

Строка, задающая столбец и порядок его сортировки. A string specifying the column and sort direction.

Возвраты

Массив объектов DataRow, отвечающих выражению для фильтра. An array of DataRow objects matching the filter expression.

Примеры

В следующем примере используется критерий фильтра для возврата массива DataRow объектов. The following example uses a filter expression to return an array of DataRow objects.

Комментарии

Для формирования filterExpression аргумента используйте те же правила для DataColumn создания значения Expression свойства класса. To form the filterExpression argument, use the same rules for creating the DataColumn class’s Expression property value. Аргумент также использует те же правила для создания Expression строк класса. Sort The Sort argument also uses the same rules for creating class’s Expression strings.

Если столбец в фильтре содержит значение null, он не будет частью результата. If the column on the filter contains a null value, it will not be part of the result.

Дополнительно

Select(String, String, DataViewRowState)

Получает массив всех объектов DataRow, отвечающих условиям фильтра, согласно порядку сортировки, соответствующему указанному состоянию. Gets an array of all DataRow objects that match the filter in the order of the sort that match the specified state.

Параметры

Условия фильтрации строк. The criteria to use to filter the rows. Примеры по фильтрации строк см. в разделе Синтаксис DataView RowFilter [C#]. For examples on how to filter rows, see DataView RowFilter Syntax [C#].

Строка, задающая столбец и порядок его сортировки. A string specifying the column and sort direction.

Одно из значений DataViewRowState. One of the DataViewRowState values.

Возвраты

Массив объектов DataRow. An array of DataRow objects.

Примеры

В следующем примере используется критерий фильтра и состояние записи для возврата массива DataRow объектов. The following example uses a filter expression and record state to return an array of DataRow objects.

Комментарии

Для формирования filterExpression аргумента используйте те же правила для DataColumn создания значения Expression свойства класса. To form the filterExpression argument, use the same rules for creating the DataColumn class’s Expression property value. Аргумент также использует те же правила для создания Expression строк класса. Sort The Sort argument also uses the same rules for creating class’s Expression strings.

Если столбец в фильтре содержит значение null, он не будет частью результата. If the column on the filter contains a null value, it will not be part of the result.

I have a datatable with 4 columns A, B, C and D such that a particular combination of values for column A, B and C is unique in the datatable.

Objective: To find the value of column D, for a given combination of values for column A, B and C.

Оцените статью