我正在阅读一个“.xml”文件,我将从中创建一个数据表。数据表的列取决于“.xml”文件。 以下是示例。 enter image description here
如示例所示,data1,data2,data3 ......等将从.xml文件中获取。数据(a,b,c,d,as,asd ......等)是相对于列标题(item1,item2,item3 ......等)添加的。
我想根据行的内容合并列。即第一列(第1项)的data1应与第4列(第4项)的data1合并,第4列应删除。有可能吗?
以下是预期输出: enter image description here
答案 0 :(得分:2)
请这样做:
static DataTable GetTable()
{
// Here we create a DataTable with four columns.
DataTable table = new DataTable();
table.Columns.Add("Item1", typeof(string));
table.Columns.Add("Item2", typeof(string));
table.Columns.Add("Item3", typeof(string));
table.Columns.Add("Item4", typeof(string));
// Here we add five DataRows.
table.Rows.Add("a", "as", "asd", "");
table.Rows.Add("b", "asd", "asd", "");
table.Rows.Add("c", "a", "asd", "");
table.Rows.Add("d", "a", "asd", "");
table.Rows.Add("", "", "", "a");
table.Rows.Add("", "", "", "d");
table.Rows.Add("", "", "", "asd");
return table;
}
DataTable dt = GetTable();
foreach (DataRow dr in dt.Rows)
{
if (!String.IsNullOrEmpty(dr["Item4"].ToString()) && String.IsNullOrEmpty(dr["Item1"].ToString()))
{
dr["Item1"] = dr["Item4"].ToString(); //assign value of column 4 to column1
}
}
dt.Columns.Remove("Item4"); //delete column 4
答案 1 :(得分:1)
public DataTable CombileDataTable(DataTable dt1, DataTable dt2)
{
DataTable dtNew = new DataTable();
foreach (DataColumn col in dt1.Columns)
{
dtNew.Columns.Add(col.ColumnName);
}
foreach (DataColumn col in dt2.Columns)
{
dtNew.Columns.Add(col.ColumnName);
}
for(int i=0; i<dt1.Rows.Count; i++)
{
DataRow item = dtNew.NewRow();
foreach (DataColumn col in dt1.Columns)
{
item[col.ColumnName] = dt1.Rows[i][col.ColumnName];
}
foreach (DataColumn col in dt2.Columns)
{
item[col.ColumnName] = dt2.Rows[i][col.ColumnName];
}
dtNew.Rows.Add(item);
dtNew.AcceptChanges();
}
return dtNew;
}