Dies liegt daran, dass toString() die aktuelle CultureInfo verwendet! Es hängt von der Kultur ab, ob ein Double durch ein Komma oder einen Punkt getrennt wird.
Siehe auch dies Stackoverflow-Frage!
Wenn Sie es debuggen, sollten Sie sehen, dass reader["Price"] ein Objekt zurückgibt (type=Object{double}). Ist hier der Wert korrekt? Ich denke, das ist es, also machen Sie einfach Folgendes, um den Double-Wert anzuzeigen:
string display = double.Parse(reader["Price"], CultureInfo.InvariantCulture).ToSring(CultureInfo.CurrentCulture);
System.Diagnostics.Debug.WriteLine(display);