2011-03-30 7 views
1

現在のコードの表現を計算する方法:私はSUM-ID ID = 2、しかしとしてデータテーブルに新しい列として追加されるID + IDとして式を持つデータテーブル

foreach (Expressions e in expressionObj) 
{ 
    if ((e.Expression != null) && (e.ColumnName != null)) 
    { 
     newtable1.Columns.Add(new DataColumn(e.ColumnName, typeof(decimal), e.Expression)); 
    } 
} 

を得た結果は、22の代わりに、4

答えて

4

で見てみましょう:

DataTable dt = new DataTable(); 
dt.Columns.Add(new DataColumn("ID", typeof(decimal))); 
dt.Columns.Add(new DataColumn("SUM-ID", typeof(decimal), "ID + ID")); 
var row = dt.NewRow(); 
row["ID"] = 2; 
dt.Rows.Add(row); 
var val = dt.Rows[0]["SUM-ID"]; 

結果:予想通りval4です。
はのは、何か他のものを試してみましょう:

DataTable dt = new DataTable(); 
dt.Columns.Add(new DataColumn("ID", typeof(string))); 
dt.Columns.Add(new DataColumn("SUM-ID", typeof(decimal), "ID + ID")); 
var row = dt.NewRow(); 
row["ID"] = "2"; 
dt.Rows.Add(row); 
var val = dt.Rows[0]["SUM-ID"]; 

結果:val22

結論である:あなたのID列はString型であるが、それは代わりに、それ以外の場合は文字列の連結が使用されている数値型である必要があります。

更新:あなたは(またはしたくない)ことができない場合は、あなたが式の中Convertを使用することができ、カラムのデータ型を設定します。2 * Convert(ID, 'System.Int32')

+0

@ここでの問題は、私が使用していますChrableWue- XMLファイルとXMLからのデータをデータテーブルに設定します。共存する表で、私は式を計算しようとしています。これは汎用コードでなければならず、どのようにして数値型を設定することができますか? – psobhan

+0

私の回答が更新されました – ChrisWue