2017-12-08 1 views
0

Ich versuche, Daten aus meiner SQL-Basis zu einem DataTable abrufen und einige Felder in Dezimal-Operationen.Convert DataTable-Feld von String in doppelte

Da ich string s bekommen, int s und double s in meinem DataTable ist wie diese new DataTable(); zu initialisieren. So ist der Standardtyp auf string gesetztAktualisierung: Das ist falsch, es ist decimal. Also keine Notwendigkeit zu konvertieren.

Imagine Ich möchte aus einem Feld zusammenzufassen meine DataTable

myRow = 2; 
double sum = 0; 
foreach (DataRow row in data.Rows) 
{ 
    if (row.Field<String>(myRow) != "") 
     sum = sum + double.Parse(row.Field<String>(myRow), CultureInfo.InvariantCulture.NumberFormat); 
} 

ich verhindern, dass leere Felder hinzugefügt werden. Also versuche ich nicht eine leere Zeichenfolge zu konvertieren.

Objekt des Typs 'System.Decimal' kann nicht in den Typ 'System.String' umgewandelt werden.

Wenn es keine „guten“ Weg, dies zu konvertieren ist, kann ich meine DataTable ändern nur decimals zu bekommen, aber wie kann ich Fill mit Decimal s?

aktualisiert Da der Standardtyp decimal ist, kann ich

sum = sum + (double) row.Field<decimal>(myRow); 

Eine Arbeit tun um würde meine Datenbank tun, um die Summe wird zu machen.

+0

In Datatable das Feld ' 'System.Decimal'', Sie versuchen, die gleiche Zeichenfolge –

+0

Frage unklar zu werfen. Dies zeigt an, dass es als String gespeichert ist: 'row.Field '. Aber der Fehler zeigt an, dass es als Dezimalzahl gespeichert ist. Dann müssen Sie eine Zeichenfolge nicht zu dezimieren, wenn es bereits eins ist. –

+0

_ "Oder ich könnte eine SQL-Anfrage machen, um meine Summe zu machen" _ Uhm, natürlich könntest du das tun. Aber was ist deine Frage jetzt? –

Antwort

0
if(row.Field<String>(myRow) != ""){ 
    var stringToDouble = Convert.ToDouble(row.Field<String>(myRow)); 
    //Or you can do Convert.ToDecimal(row.Field<String>(myRow)); 
}