2012-02-15 103 views
4

我有一個數據表,有些列是字符串,有些是十進制的。當我添加一行時,它會自動轉換信息還是必須自己轉換它們?我有很多數據,我需要在一個表中添加,目前我使用此:將行添加到數據表#2

DataRow row = dataTable.NewRow(); 
row["item1"] = Info[0]; 
row["Item2"] = Info[1]; 
row["item3"] = Info[2]; 
row["Item4"] = Convert.ToDecimal(Info[3]); 
+0

什麼是信息的類型? – 2012-02-15 12:57:42

回答

1

行[「...」]是一個對象,將採取任何類型。如果你的Info [n]是一個字符串,你可以根據需要將它轉換爲正確的類型。我不知道,如果信息是一個集合或沒有,但如果是這樣,爲什麼不這樣做,而不是:

List<Info> infoList = new List<Info>(); 
infoList.Add(...); //Add item here. 

foreach(Info info in infoList) 
{ 
    DataRow row = dataTable.NewRow(); 
    row["item1"] = info.Item1; //where Item1 could be a string 
    row["Item2"] = info.Item2; //where Item2 could be an int 
    row["item3"] = info.Item3; //Where Item3 could be a DateTime 
    row["Item4"] = info.Item4; //Where Item4 could be a Decimal 
} 
0

如果你的數據表沒有類型的,是的,你必須將數據轉換到預期的類型,在鍵入數據表的情況下它會轉換數據,如:

int number = "0"; 

您還可以設置列類型。

1

亞歷克斯·門德斯請看看這個鏈接:http://msdn.microsoft.com/en-us/library/system.data.datatable.newrow.aspx,我認爲你缺少指示的代碼行(見下面):

foreach(Info info in infoList) 
{ 
    DataRow row = dataTable.NewRow(); 
    row["item1"] = info.Item1; //where Item1 could be a string 
    row["Item2"] = info.Item2; //where Item2 could be an int 
    row["item3"] = info.Item3; //Where Item3 could be a DateTime 
    row["Item4"] = info.Item4; //Where Item4 could be a Decimal 
    dataTable.Rows.Add(row); //<-- You need to add this line to actually save the value to the Data Table 
}