Думайте о наборе данных как о наборе таблиц и, необязательно, информации об отношениях между ними.
В вашем примере кода вы создаете независимую таблицу, которая не принадлежит DataSet.Чтобы прагматично создать таблицу, которая является частью набора данных, вы можете сделать следующее:
DataSet ds = new DataSet();
DataTable dt = ds.Tables.Add();
//or
ds.Tables.Add(MyAlreadyCreatedTable);
Джейсон Эванс, приведенный выше, также корректен, заполнение DataTables и DataSets намного проще, используя SqlDataAdaptors, как он продемонстрировал.
Наконец, метод, который вы написали, предназначен для возврата набора данных.Но он захватывает только один набор результатов из хранимой процедуры, которую он вызывает.Возможно, что процедура может вернуть любое количество отдельных результатов.
Все, что вам нужно сделать, это изменить следующее:
DataTable table = new DataTable();
using (SqlDataReader reader = command.ExecuteReader())
{
table.Load(reader);
}
на
//you can skip creating a new DataTable object
using (SqlDataAdapter da = new SqlDataAdapter(command))
{
da.Fill(result); // the result set you created at the top
}