keine Überladung für die Methode "ToString" benötigt 1 Argumente

7

Ich habe einen Datenleser, um die Daten aus der Datenbank zu lesen. Ich lese TotalPrice aus der Verkaufstabelle. Ich möchte den Gesamtpreis als 2 Dezimalstelle angeben.

Der Code ist etwas Link, dass:

%Vor%

Allerdings habe ich diesen Fehler eingefügt: keine Überladung für die Methode "ToString" benötigt 1 Argumente Was stimmt nicht mit dem Code?

    
user1125911 01.02.2012, 05:20
quelle

2 Antworten

12

Nehmen wir an, dass TotalPrice eine Dezimalspalte ist und dass myReader ein DataReader ist:

%Vor%

Die Idee hier ist, dass der Indexer von myReader (was Sie verwenden, wenn Sie myReader["TotalPrice"] aufrufen) ein Objekt zurückgibt. Es muss, da es zur Kompilierzeit nicht weiß, welcher Typ die Spalte ist. Mit .GetDecimal() stellen Sie sicher, dass Sie einen Dezimalwert zurück oder einen Fehler erhalten.

Die .ToString Überladung, die eine Formatzeichenfolge annimmt, wird in Dezimal deklariert, nicht in Objekt. Object's.% Co_de% benötigt keine Argumente.

Der innere Aufruf von GetOrdinal gibt den Index des Felds anhand des Namens zurück. Wenn Sie dies in einer Schleife für mehrere Datenzeilen tun, möchten Sie diese wahrscheinlich in einer Variablen zwischenspeichern.

    
Chris Shain 01.02.2012, 05:23
quelle
8

String.Format () wird den Trick machen. F2 ist Festkomma-Notation mit 2 Nachkommastellen.

%Vor%     
Despertar 01.02.2012 05:27
quelle

Tags und Links