Заполнить таблицу данных из чтения данных

Я делаю основную вещь в C # (MS VS2008) и у меня есть вопрос больше о правильном дизайне, чем конкретный код.

Я создаю таблицу данных, а затем пытаюсь загрузить ее из устройства чтения данных (которое основано на хранимой процедуре SQL). Что мне интересно, так это то, что наиболее эффективный способ загрузки данных - это сделать оператор while или есть лучший способ.

Для меня единственным недостатком является то, что мне приходится вручную вводить поля, которые я хочу добавить в своем операторе while, но я все равно не знаю, как это автоматизировать, поскольку я не хочу, чтобы все поля из SP просто выбирали , но это не так уж много в моих глазах.

Я включил фрагменты кода ниже всего того, что я делаю, хотя для меня сам код не примечательный или даже то, о чем я спрашиваю. Еще больше задаваясь вопросом о моей методологии, я буду приставать к справке по коду позже, если моя стратегия неверна / неэффективна.

var dtWriteoffUpload = new DataTable();
dtWriteoffUpload.Columns.Add("Unit");
dtWriteoffUpload.Columns.Add("Year");
dtWriteoffUpload.Columns.Add("Period");
dtWriteoffUpload.Columns.Add("Acct");
dtWriteoffUpload.Columns.Add("Descr");
dtWriteoffUpload.Columns.Add("DEFERRAL_TYPE");
dtWriteoffUpload.Columns.Add("NDC_Indicator");
dtWriteoffUpload.Columns.Add("Mgmt Cd");
dtWriteoffUpload.Columns.Add("Prod");
dtWriteoffUpload.Columns.Add("Node");
dtWriteoffUpload.Columns.Add("Curve_Family");
dtWriteoffUpload.Columns.Add("Sum Amount");
dtWriteoffUpload.Columns.Add("Base Curr");
dtWriteoffUpload.Columns.Add("Ledger");  

cmd = util.SqlConn.CreateCommand();
cmd.CommandTimeout = 1000;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "proc_writeoff_data_details";
cmd.Parameters.Add("@whoAmI", SqlDbType.VarChar).Value = 

WindowsIdentity.GetCurrent().Name;

cmd.Parameters.Add("@parmEndDateKey", SqlDbType.VarChar).Value = myMostRecentActualDate;
cmd.Parameters.Add("@countrykeys", SqlDbType.VarChar).Value = myCountryKey;
cmd.Parameters.Add("@nodekeys", SqlDbType.VarChar).Value = "1,2";
break;


dr = cmd.ExecuteReader();
while (dr.Read())                    
{
    dtWriteoffUpload.Rows.Add(dr["country name"].ToString(), dr["country key"].ToString());
}

Ответы на вопрос(5)

Ваш ответ на вопрос