我有25列的数据集(数据集名称dsEmp),这里我需要添加一个新列,其列名为“EndDate”,数据类型为字符串
现在我需要将数据类型为Datetime的column18中的所有数据导入到新创建的数据列“EndDate”中,一旦我们将所有数据从第18列导入到新列“EndDate”, 我们应该删除column18
希望我的问题清楚,
任何人都可以帮助我。
答案 0 :(得分:2)
这就是你要找的东西:
DataSet ds = new DataSet();
DataTable dtt = new DataTable();
ds.Tables.Add(dtt);
// simulate required columns
dtt.Columns.Add("col1", typeof(int));
dtt.Columns.Add("col2", typeof(string));
//...
dtt.Columns.Add("col18", typeof(DateTime));
// pupulate with dummy date
for (int index = 0; index < 100; index++)
{
dtt.Rows.Add(index, "val" + index.ToString(), DateTime.Now.AddMinutes(index));
}
// add new column
DataColumn colEndDate = new DataColumn("EndDate", typeof(DateTime));
dtt.Columns.Add(colEndDate);
// get old column reference
DataColumn colOld18 = dtt.Columns["col18"];
// loop thru all rows
foreach (DataRow row in dtt.Rows)
{
// store value from old column to new column
row[colEndDate] = Convert.ToDateTime(row[colOld18]).ToShortDateString();
// or
row[colEndDate] = Convert.ToDateTime(row[colOld18]).ToString("MM/dd/yyyy hh:mm:ss");
}
// remove old column
dtt.Columns.Remove(colOld18);
dtt.AcceptChanges();
答案 1 :(得分:1)
@Prince我为你准备了一个小班,这样你就可以用它来做你想做的事。希望它符合您的要求。我想昨天发布这个答案,但我的工作很忙。
class TestAddRemoveCol { /// /// Adds the passed column to a datatable at a particular location /// /// /// /// /// public DataTable AddCol(DataSet ds, string colName, Type type, int location) { DataTable dt = new DataTable(); int colIndex = 0; DataColumn dc2 = null; foreach (DataColumn item in ds.Tables[0].Columns) { if (colIndex == location) { dc2 = new DataColumn(); dc2.ColumnName = colName; dc2.DataType = type; dt.Columns.Add(dc2); } dc2 = new DataColumn(); dc2.ColumnName = item.ColumnName; dc2.DataType = item.DataType; dt.Columns.Add(dc2); colIndex++; } foreach (DataRow dr in ds.Tables[0].Rows) { dt.ImportRow(dr); } return dt; } /// /// returns a datacolumn with type string /// /// /// /// public DataTable CopyCol(DataTable dt, string oldColName, string newColName) { DataTable dt2 = dt.Copy(); for (int i = 0; i /// Removes column from a particular location /// /// /// public void RemoveCol(DataTable dt, string colName) { //Remove column with a particular name dt.Columns.Remove(colName); //OR //Remove column at a particular index //ds.Tables[0].Columns.RemoveAt(index); } }
您可以使用此课程。
//Test Add/Remove Col //Create dummy dataset for testing DataSet ds = new DataSet(); DataTable dt = new DataTable(); DataColumn dc = new DataColumn("col1", typeof(DateTime)); dt.Columns.Add(dc); dc = new DataColumn("col2", typeof(DateTime)); dt.Columns.Add(dc); dc = new DataColumn("col3", typeof(DateTime)); dt.Columns.Add(dc); dc = new DataColumn("col4", typeof(DateTime)); dt.Columns.Add(dc); DataRow dr = dt.NewRow(); dr[0] = Convert.ToDateTime("01/01/2011"); dr[1] = Convert.ToDateTime("02/01/2011"); dr[2] = Convert.ToDateTime("03/01/2011"); dr[3] = Convert.ToDateTime("04/01/2011"); dt.Rows.Add(dr); ds.Tables.Add(dt); //Create object of the class TestAddRemoveCol obj = new TestAddRemoveCol(); //Add column at the specific location in the dataset DataTable dt2 = obj.AddCol(ds, "EndDate", typeof(String), 2); //Copy data from one column to another DataTable dt3 = obj.CopyCol(dt2, "col3", "EndDate"); //Remove column with the specific name obj.RemoveCol(dt3, "col3");
我已检查过代码,但工作正常。此代码也适用于.net 1.1。
此致
萨马