在.net 1.1中的数据集中添加一列

时间:2011-01-05 13:36:46

标签: c#

我有25列的数据集(数据集名称dsEmp),这里我需要添加一个新列,其列名为“EndDate”,数据类型为字符串

现在我需要将数据类型为Datetime的column18中的所有数据导入到新创建的数据列“EndDate”中,一旦我们将所有数据从第18列导入到新列“EndDate”, 我们应该删除column18

希望我的问题清楚,

任何人都可以帮助我。

2 个答案:

答案 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。

此致

萨马