2010-05-17 7 views
6
string listOfItemPrices = items.ToSemiColonList(item => string.Format("{0:C}", item.Price.ToString())); 

Ich versuche einfach, den Preis hier auf 2 Dezimalstellen zu formatieren. Ok, also implementiert das string.Format IFormattable nicht? Ok, ich bin mir nicht sicher, wie ich das umgehen soll, damit ich die Dezimalstelle (Preis) hier formatieren kann.Formatierung ist angegeben, aber Argument ist nicht IFormattable

Antwort

14

Durch die Übergabe item.Price.ToString() an String.Format übergeben Sie eine Zeichenfolge, keine Dezimalstelle.
Da Zeichenfolgen nicht mit Formatzeichenfolgen verwendet werden können, wird ein Fehler ausgegeben.

Sie benötigen die Decimal Wert String.Format durch .ToString() Entfernung passieren.

+0

Ich erhalte das gleiche mit: inFile.setINVQueryDept (string.Format ("{0: # 0.00}", frmCentral.startDept), string.Format ("{0: # 0.00}", frmCentral.endDept)); –

1

Es gibt keinen Sinn, hier string.format zu verwenden, das zum Hinzufügen formatierter Werte in Strings verwendet wird. z.B.

String.Format("This is my first formatted string {O:C} and this is my second {0:C}",ADecimal,AnotherDecimal) 

Wenn Sie nur den Wert einer Dezimalstelle Variable als formatierte Zeichenfolge wollen, dann geben Sie einfach den String Formatierer auf die ToString() -Methode z.B.

ADecimal.ToString("C"); 
Verwandte Themen