2017-12-08 6 views
0

私のSQLベースからDataTableにデータを取得しようとしていて、一部のフィールドで小数点以下の演算を実行しようとしています。DataTableフィールドを文字列からdoubleに変換します

私はこのnew DataTable();のように初期化されて、私のDataTablestring秒、int sおよびdouble Sを得ることができますので。 デフォルトタイプはstringに設定されています。これは間違っていますが、それはdecimalです。だから変換する必要はありません。

は私が追加される空のフィールドを防ぐために私DataTable

myRow = 2; 
double sum = 0; 
foreach (DataRow row in data.Rows) 
{ 
    if (row.Field<String>(myRow) != "") 
     sum = sum + double.Parse(row.Field<String>(myRow), CultureInfo.InvariantCulture.NumberFormat); 
} 

からフィールドを合計したい想像してみてください。だから私は空の文字列を変換しようとしない。

タイプ 'System.Decimal'のオブジェクトをタイプして 'System.String'をタイプできません。これを変換する「良い」方法がない場合は

は、私は私のDataTableのみdecimalsを取得するには変更はなく、Decimal秒で私にFillをどのように行うことができますか?デフォルトのタイプはdecimalあるので

更新 、私の周り

sum = sum + (double) row.Field<decimal>(myRow); 

1つの作業を行うことができます私のデータベースは、合計をやらせられます。

+0

フィールドが ''System.Decimal''である場合、同じものを文字列にキャストしようとしています –

+0

質問が不明です。これは文字列 'row.Field 'として格納されていることを示します。しかし、エラーは小数点として格納されていることを示します。次に、文字列を10進数に変換する必要はありません。 –

+0

_ "または、私の和訳を行うSQLリクエストを行うことができます" _もちろん、あなたはそれを行うことができます。しかし今あなたの質問は何ですか? –

答えて

0
if(row.Field<String>(myRow) != ""){ 
    var stringToDouble = Convert.ToDouble(row.Field<String>(myRow)); 
    //Or you can do Convert.ToDecimal(row.Field<String>(myRow)); 
} 
関連する問題