2011-12-01 74 views
0

我得到一些非结构化的数据。所以我希望它是结构化的形式。所以我在这个数据表中添加了两列,即“字段”和“值”。现在我在数据中添加了第一行以及这两列中的数据。但是,每次我再次将数据保存在这个数据表中时,它的概率就是它取代旧数据。我的代码是:如何在数据表末尾添加值?

 DataTable dt = new DataTable(); 
      dt.Columns.Add("Field", typeof(string)); 
      dt.Columns.Add("Value", typeof(string)); 
      dt.Rows.Add(val.Substring(0, val.IndexOf(":") + 1), val.Substring(val.IndexOf(":") + 1, val.Length - val.IndexOf(":") - 1)) 
+0

它是什么样的应用程序?桌面,Web应用程序?如果您每次创建DataTable,它将只包含一行。你能展示更多的背景吗? –

回答

1

使用数据表,你必须将它添加之前创建一个新的行:

DataTable dt = new DataTable(); 
dt.Columns.Add("Field", typeof(string)); 
dt.Columns.Add("Value", typeof(string)); 

var row = dt.NewRow(); 
dt["Field"] = "FieldName"; 
dt["Value"] = "Value"; 
dt.Rows.Add(row); 

NewRow() documentation

您必须使用NEWROW方法来创建新的DataRow与DataTable具有相同模式的对象 。创建DataRow后,您可以通过DataTable对象的行 属性将其添加到DataRowCollection中,即 。当您使用NewRow创建新行时,在调用Clear之前,必须将行添加到数据表中或从中删除行 。

但是,如果您只处理一个键/值对,为什么不使用Dictionary<string, string>

0

你在循环中使用它?只有最后一行应该在循环中,否则每个循环都要实例化数据表。

+0

你可以说它的循环,但我想要什么,因为我得到的新值应添加在数据表末尾作为创建新行。 –