Füllen Sie die Datentabelle mit Daten aus dem Datenleser

Ich mache eine grundlegende Sache in C # (MS VS2008) und habe eine Frage mehr zum richtigen Design als zu spezifischem Code.

Ich erstelle eine Datentabelle und versuche dann, die Datentabelle aus einem Daten-Reader (der auf einer gespeicherten SQL-Prozedur basiert) zu laden. Ich frage mich, ob der effizienteste Weg zum Laden der Daten eine while-Anweisung ist oder ob es einen besseren Weg gibt.

Für mich ist der einzige Nachteil, dass ich die Felder, die ich in meine while-Anweisung einfügen möchte, manuell eingeben muss, aber ich weiß auch nicht, wie ich das trotzdem automatisieren kann, da ich nicht möchte, dass alle Felder des SP nur diejenigen auswählen , aber das ist in meinen Augen keine große Sache.

Ich habe Code-Schnipsel unterhalb der Gesamtheit meiner Arbeit eingefügt, obwohl der Code selbst für mich nicht bemerkenswert ist oder auch nur das, wonach ich frage. Moreso wundert sich über meine Methodik und ich werde später um Hilfe beim Code bitten, wenn meine Strategie falsch / ineffizient ist.

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

Antworten auf die Frage(5)

Ihre Antwort auf die Frage