DataSet myDataSet = new DataSet();
 // Пустой объект - представитель класса DataSet.
 DataTable myTable = new DataTable(); // Пустая таблица создана.
 myDataSet.Tables.Add(myTable); // И подсоединена к объекту класса DataSet.
 // Определение структуры таблицы. Это мероприятие можно было
 // провести и до присоединения таблицы. 
 DataColumn shipColumn = new DataColumn("Ships");
 myDataSet.Tables[0].Columns.Add(shipColumn);
  
 // Прочие столбцы подсоединяются аналогичным образом.
 // Таким образом формируются поля данных таблицы.
 // Внимание! После того как определена структура таблицы,
 // то есть определены ВСЕ СТОЛБЦЫ таблицы, от имени этой конкретной
 // таблицы порождается объект-строка. Этот объект сразу располагается
 // непосредственно в таблице. Для каждой определенной таблицы
 // метод NewRow() порождает строку
 // (последовательность значений соответствующего типа). 
 // Для непосредственного
 // редактирования вновь созданной строки запоминается ее ссылка. 
 // Работать со строкой через эту ссылку проще, чем с массивом
 // строк таблицы.
 DataRow myRow = myDataSet.Tables[0].NewRow();

 // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 // Остается заполнить строку таблицы содержательной информацией.
 // При этом может быть использован любой источник данных.
 // В данном примере предполагается наличие объекта типа ArrayList 
 // с именем ShipCollection.
 for (int i = 0; i < ShipCollection.Count; i++)
 {
 myRow.Item[Counter] = ShipCollection[i];
 } 

 // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 // Заполненный объект - представитель класса DataRow добавляется 
 // к набору Rowsкласса DataTable.
 myDataSet.Tables[0].Rows.Add(myRow);

Листинг 18.7.
Закрыть окно