decimal?
オブジェクトをデータ型にキャストする単一行の方法はありますか?
私のコードは次のようになります。
foreach(DataRow row in dt.Rows)
{
var a = new ClassA()
{
PropertyA = row["ValueA"] as decimal?,
PropertyB = row["ValueB"] as decimal?,
PropertyC = row["ValueC"] as decimal?
};
// Do something
}
ただし、オブジェクトをにキャストするとdecimal?
、期待どおりに機能せず、毎回nullが返されます。
データ行はExcelファイルから読み取られるため、各行のオブジェクトのデータ型double
は、値がある場合はa、string
空白のままの場合はnullのいずれかになります。
このキャストを実行するための推奨される方法はを使用することですがdecimal.TryParse
、クラスのすべての10進数プロパティに対して一時変数を作成したくありません(実際のクラスには、3ではなく10進数である約7つのプロパティがあります)。
decimal tmpvalue;
decimal? result = decimal.TryParse((string)value, out tmpvalue) ?
tmpvalue : (decimal?)null;
nullの可能性のある値を1行でにキャストする方法はありますdecimal?
か?
ここに投稿された回答を試しましたが、機能していないようで、が返さnull
れるため、値も表示されます。row["ValueA"] as string
null