C# 如何在不丢失数据的情况下重命名数据表列名?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/8924743/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-09 05:12:29  来源:igfitidea点击:

How to rename the datatable column name without losing the data?

c#asp.netlinqdatatable

提问by Anyname Donotcare

Q:

问:

I want to rename my data table column names .

我想重命名我的数据表列名。

I tried this :

我试过这个:

dt.Columns[8].ColumnName = "regnum";

dt.AcceptChanges();

but my data is lost after that !!

但在那之后我的数据丢失了!!

采纳答案by Henk Holterman

dt.Columns[8].ColumnName = "regnum";

This just binds your Columns[8]to the non-existing "regnum" column in the Db.

这只是将您绑定Columns[8]到数据库中不存在的“regnum”列。

If you want to rename the actuals Db column, execute an SQL script.

如果要重命名实际值 Db 列,请执行 SQL 脚本。

But my guess is you actually want to change the Caption:

但我的猜测是你真的想改变标题:

  dt.Columns[8].Caption = "regnum";

回答by Pankaj

Following is the example:

以下是示例:

DataTable Dt = new DataTable();
DataColumn Dc = new DataColumn("Name");
DataColumn Dc1 = new DataColumn("ID");
Dt.Columns.Add(Dc);
Dt.Columns.Add(Dc1);

DataRow dr = Dt.NewRow();
dr["name"] = "1";
dr["ID"] = "111";
Dt.Rows.Add(dr);

dr = Dt.NewRow();
dr["name"] = "2";
dr["ID"] = "11112";
Dt.Rows.Add(dr);

Dt.Columns[0].ColumnName = "ddsxsd";
Dt.AcceptChanges();

I did not find any data loss!!!!!!!! Because it will merely change the column name.

我没有发现任何数据丢失!!!!!!!!因为它只会改变列名。

EDIT

编辑

You can also bring your desired column names from your Stored Procedures.

您还可以从存储过程中获取所需的列名称。

回答by Henk Holterman

Try this:

尝试这个:

 dataTable.Columns["ExistingColumnName"].ColumnName = "regnum";

回答by PatsonLeaner

Also may this code serve someone! I have a realize that this is the easiest way just like @Henk said:

也可以此代码为某人服务!我意识到这是最简单的方法,就像@Henk 说的:

using (SqlDataAdapter da = new SqlDataAdapter())
                    {
                        DataTable dt = new DataTable();
                        cmd.CommandType = CommandType.Text;
                        cmd.Connection = con;
                        da.SelectCommand = cmd;
                        da.Fill(dt);
                        dt.Columns[0].ColumnName = "Item NO";
                        dt.Columns[1].ColumnName = "LocalCode";                       
                        dt.Columns[2].ColumnName = "Currency";
                        dt.Columns[3].ColumnName = "Menu Flag";
                        dt.Columns[4].ColumnName = "Item Class";
                        dt.Columns[4].ColumnName = "Dress Sort";
                        return dt;
                    }