2012-01-03 14 views
0

匿名コレクションを作成するLINQクエリがあります。ToStringを使用してLinqの数値フィールドを再フォーマットする

... select new { Amount = e.Item_Amount.ToString("C") } 

私は.ToString用ませ過負荷が1つの引数を取りません」言われます:私は戻ってることの一つは、私は私のような何かをしようとした場合しかし、代わりに50.23888838222などの通貨としてフォーマットたい数、です。

しかし、このコードは、個々の文字列を変更するときにうまく機能します。

私はLinq to Sqlでこのような問題を抱えていましたが、これはメモリコレクションにすぎません。この目的を達成するための最良の方法は何ですか?

おかげ

+3

は 'のItem_Amount'のですか? – Fischermaen

+0

それはヌル値の10進数で、その事実を人に残して申し訳ありませんでした。乾杯 – Glinkot

答えて

3

そのnullable場(たぶん)。

Amount = e.Item_Amount.Value.ToString("C") 
//or 
Amount = (e.Item_Amount ?? 0).ToString("C"); 
+0

この場合、 'NullReferenceException'があります。 – Matej

+0

@Matej - このコードをテストしてください:10進数? val =(10進数?)10.10;文字列str = val.ToString( "C"); – adatapost

+0

必ずしもnullable型であるとは限りませんが、文字列は同じ例外をスローします(オーバーロードなし...) –

0

e.Item_Amountは数値型ではないようです。

Int32や10進数などの数値型に変更したり、反復処理中に値を解析したりすることができます。

select new { 
    Amount = decimal.Parse(e.Item_Amount).ToString("C") 
} 

あなたがNULL可能タイプを扱う場合は、次の操作を行うことができます:どのような種類の

select new { 
     Amount = (e.Item_Amount ?? 0).ToString("C") 
} 
+0

ヴィンスさんに感謝します。あなたの答えの2番目の部分に記したように、それはNULL可能な小数です。 – Glinkot

関連する問題