Ich habe eine Ausweichlösung für diesen Fehler gefunden, aber bin jetzt wirklich neugierig, warum dies passieren würde, fragte mich, ob jemand diesen Fehler hatte.Parsing einer Dezimalstelle von einem DataReader
Meine Funktion ist wie folgt:
public void Blog_GetRating(int blogID, ref decimal rating, ref int voteCount)
{
// Sql statements
// Sql commands
if (DataReader.Read())
{
// this line throws a 'Input string was not in a correct format.' error.
rating = decimal.Parse(DataReader["Rating"].ToString());
// this works absolutly fine?!
decimal _rating = 0;
decimal.TryParse(DataReader["Rating"].ToString(), out _rating);
rating = _rating;
}
}
Wer jemals zuvor gesehen?
Was noch seltsamer ist, wenn ich diese Art:
rating = decimal.Parse("4.0");
, die gut funktioniert, ist die 4,0, was von meinem Datareader herauskommt.
Wie ich bereits sagte, funktioniert die TryParse-Methode gut, so dass es mich nicht davon abhält, zu tragen, aber jetzt bin ich wirklich interessiert zu sehen, ob jemand eine Antwort dafür hat.
Ich freue mich auf einige Antworten!
Sean
EDIT - GELöST
Die Decimal.Parse Methode funktioniert gut, das zweite Mal die Funktion (war in einer Schleife) ausgeführt wurde, hatte ein Post nicht so ein bewertet Nullwert wurde vom Datenleser zurückgegeben. Das Einwickeln von COALESCE um meine Berechnung in SQL hat das Problem gelöst. Daher, wie Sie sagten, hat die tryparse-Methode keine Ausnahme ausgelöst, sondern nur den Standardwert 0 auf _rating.
Warum sollte die Spalte nicht numerisch sein, also müssen Sie nicht analysieren? –