2016-05-07 4 views
2

Ich möchte einen Wertparameter dynamisch über ein Array zuweisen. Zum Beispiel wird das Array arr_param enthalten zwei Wert [0] = "abc", [1] = "ZYX" .Nun, ich sie .Das Problem hier vergeben wird, ist, dass ich die richtigen Elemente [0], [1] nach Lauf foreach angeben muss, habe ich versucht, es zu tun aber nicht konvertieren intWie Parameter aus einem Array in C# übergeben?

string[] arr_param = array_parameter.Split(';'); 
foreach (DataRow parmRow in parmsDataTable.Rows) 
{ 
    string parmName = parmRow[parmNameDataColumn].ToString(); 
    cmd.Parameters.AddWithValue(parmName, arr_param[Convert.ToInt32(parmsDataTable.Rows)]); 
} 

Ich bekomme Fehler Unable to cast object of type 'System.Data.DataRowCollection' to type 'System.IConvertible'.

+1

Sie diese Ausnahme erhalten, weil dieser Linie: cmd.Parameters.AddWithValue (parmName, arr_param [Convert.ToInt32 (parmsDataTable.Rows)]); Sie versuchen, eine Sammlung von DataRow, die parmsDataTable.Rows ist, zu einem Int32-Typ zu konvertieren. Sie können diese Konvertierung nicht durchführen. – CodeNotFound

Antwort

1

parmsDataTable.Rows ist ein DataRowCollection und kann nicht in int konvertiert werden.

A Einfache Lösung:

string[] arr_param = array_parameter.Split(';'); 
int counter = 0; 
foreach (DataRow parmRow in parmsDataTable.Rows) 
{ 
    string parmName = parmRow[parmNameDataColumn].ToString(); 
    cmd.Parameters.AddWithValue(parmName, arr_param[counter++)]); 
} 

Oder:

string[] arr_param = array_parameter.Split(';'); 
foreach (DataRow parmRow in parmsDataTable.Rows) 
{ 
    string parmName = parmRow[parmNameDataColumn].ToString(); 
    cmd.Parameters.AddWithValue(parmName,arr_param[parmsDataTable.Rows.IndexOf(parmRow))]); 
} 
+0

oh, zwei Möglichkeiten arbeiten und ich denke, der erste Weg leichter zu verstehen, weil es klar ist. Vielen Dank. –

Verwandte Themen