[C#]DataTable常用操作总结
protected void Page_Load(object sender, EventArgs e)
{
//①Create a DataTable
DataTable dt = new DataTable("Table_AX");

//②Add columns for DataTable
//Method 1
dt.Columns.Add("column0", System.Type.GetType("System.String"));
//Method 2
DataColumn dc = new DataColumn("column1", System.Type.GetType("System.Boolean"));
dt.Columns.Add(dc);

//③Add rows for DataTable
//★Initialize the row
DataRow dr = dt.NewRow();
dr["column0"] = "AX";
dr["column1"] = true;
dt.Rows.Add(dr);
//★Doesn't initialize the row
DataRow dr1 = dt.NewRow();
dt.Rows.Add(dr1);

//④Select row
//Search the second row 如果没有赋值,则用is null来select
DataRow[] drs = dt.Select("column1 is null");
DataRow[] drss = dt.Select("column0 = 'AX'");


//⑤Copy DataTable include data
DataTable dtNew = dt.Copy();

//⑥Copy DataTable only scheme
DataTable dtOnlyScheme = dt.Clone();

//⑦Operate one row
//★都是对dt的操作
//Method 1
DataRow drOperate = dt.Rows[0];
drOperate["column0"] = "AXzhz";
drOperate["column1"] = false;
//Method 2
drOperate[0] = "AXzhz";
drOperate[1] = false;
//Method 3
dt.Rows[0]["column0"] = "AXzhz";
dt.Rows[0]["column1"] = false;
//Method 4
dt.Rows[0][0] = "AXzhz";
dt.Rows[0][1] = false;

//⑧Evaluate another DataTable's row to current Datatable
dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray);

//⑨Use Rowstate
//■■■■■■■■■■■■■■■■■■■■■■■■■■■■
//不知道怎么才能使Row的State变为DataRowState.Deleted
//More further,怎样设置Row的State
//■■■■■■■■■■■■■■■■■■■■■■■■■■■■
if (dt.Rows[0].RowState == DataRowState.Unchanged)
{
//Your logic
}

//⑩Convert to string
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(sw);
dt.WriteXml(xw);
string s = sw.ToString();

//ⅰ.string convert to DataTable【Doesn't achieve it】
//■■■■■■■■■■■■■■■■■■■■■■■■■■■■
//没有把string成功转换为DataTable ■■已实现,参见追加■■
//■■■■■■■■■■■■■■■■■■■■■■■■■■■■
//DataTable dtConvert = new DataTable();
//System.IO.StringReader stream = new System.IO.StringReader(s);
//System.Xml.XmlReader xtr = new System.Xml.XmlTextReader(stream);
//dtConvert.ReadXml(xtr);

//ⅱ.Filter DataTable
//It's so strange that the second row has been filtered
//the second row show in GridView never
//It means null field will be filter always.
//Filter the all conditions
dt.DefaultView.RowFilter = "column1 <> true";
//dt.DefaultView.RowFilter = "column1 = true";

dt.DefaultView.RowStateFilter = DataViewRowState.Added;

//ⅲ.Sort row
//Stupid method
DataRow[] drsss = dt.Select(String.Empty, "column0 DESC , column1 ASC");
//Clever method
dt.DefaultView.Sort = "column0 , column1 ASC";

//ⅳ.Bind DataTable
//绑定的其实是DefaultView
gvTestDataTable.DataSource = dt;
gvTestDataTable.DataBind();
}


































































































【追加】判断一个字符串是否为DataTable的列名

【追加】DataTable与XML的转换
































dt.DefaultView.Sort = "ID ,Name ASC";
dt=dt.DefaultView.ToTable();
转载自:http://www.cnblogs.com/LiveStar/archive/2009/01/14/1375774.html
dt=dt.DefaultView.ToTable();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!