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