私は、XMLへのLINQを使用してXMLからいくつかのデータを抽出しようとしている、と私は、次のコードを持っている:Linqで文字列を10進数に変換できるかどうかをテストするにはどうすればよいですか?
commisionPct = XDocument.Parse(commissionXml)
.Descendants("Range")
.Attributes("commission")
.Select(x => Convert.ToDecimal(x.Value))
.FirstOrDefault();
問題はx.Value
は小数点でない場合、私は例外にそれをしたくないです。通常、私はdecimal.TryParse
を使用したいと思いますが、linq文の内部でこれを行うためのきれいな方法はわかりません。私はtry/catchブロックでこれを囲むことができたと思いますが、Linq内部でこれを行うより良い方法があれば私は興味がありました。
10進でない場合は、小数点のデフォルト値(0)を返すことをお勧めします。
それは 'TryParse'を呼び出す前にゼロに変数を設定することは無意味です。値は常にそのメソッドが置く値に置き換えられます(値が解析できない場合はゼロになります)。 – Guffa
良い点、私はそれを別に書いて、私はメソッドをトリムダウンしたときにそれを取ることを忘れてしまった。 – DaveShaw