分享

C# DataTbale详细操作(1)

 时间剧毒 2019-04-29

1、创建DataTable对象

DataTable dt = new DataTable("Table_AX");

2、为DataTable创建列

//方式一(我觉得这种好)dt.Columns.Add("column0", System.Type.GetType("System.String"));//方式二DataColumn dc = new DataColumn("column0", typeof(string));
DataColumn dc = new DataColumn("column1", System.Type.GetType("System.Boolean"));
dt.Columns.Add(dc);

3、添加数据

DataRow dr = dt.NewRow();
dr["column0"] = "AX";
dr["column1"] = true;
dt.Rows.Add(dr);

4、移除数据

dt.Columns.Remove("column0");

4、判断是否有数据

//判断是否有数据if (dt.Rows.Count > 0)
{ //有}

5、查询

DataRow[] drs = dt.Select("column1 is null");
DataRow[] drss = dt.Select("column0 = 'AX'"); 
//返回第一条DataRow dr = dt.Select("column1 is null").First();//多条件用and连接DataRow[] rows = dt.Select("column0 = 'AX' and column1 == true").First();

6、复制

复制代码

//复制一个DataTable(有数据)DataTable dtNew = dt.Copy();//复制一个空的DataTable(无数据)DataTable dtOnlyScheme = dt.Clone();//将 DataRow 复制到 DataTable 中,保留任何属性设置以及初始值和当前值DataRow[] rows = dt.Select("column0 = 'AX' and column1 == true").First();foreach (DataRow row in rows)
{
    dtNew.ImportRow(row);//复制行数据}

复制代码

7、DataRow赋值

复制代码

DataRow drOperate = dt.Rows[0];//方式一drOperate["column0"] = "AXzhz";
drOperate["column1"] = false;//方式二drOperate[0] = "AXzhz";
drOperate[1] = false;//方式三dt.Rows[0]["column0"] = "AXzhz";
dt.Rows[0]["column1"] = false;//方式四dt.Rows[0][0] = "AXzhz";
dt.Rows[0][1] = false;

复制代码



8、把DataRow数据存到DataTable中

dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray);

9、转成字符串

System.IO.StringWriter sw = new System.IO.StringWriter();
System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(sw);
dt.WriteXml(xw);//此处DataTable必须有名字string s = sw.ToString();

10、筛选数据(详见DefaultView文章)

dt.DefaultView.RowFilter = "column1 <> true";

dt.DefaultView.RowFilter = "column1 = true";

第一种方法是直接从一个datatable转到另一个datatable

private static DataTable GetNewTable(DataTable DT, string strCondition)

{

DataTable TempDT = DT.Clone();

DataRow[] Rows = DT.Select(strCondition);

foreach (DataRow DR in Rows)

{

TempDT.ImportRow(DR);

}

return TempDT;

}

第二种方法

public DataTable ToDataTable(DataRow[] rows)  

{

if (rows == null || rows.Length == 0) return null;

DataTable tmp = rows[0].Table.Clone();  // 复制DataRow的表结构  

foreach (DataRow row in rows)

tmp.Rows.Add(row.ItemArray);  // 将DataRow添加到DataTable中  

return tmp;

}

回到顶部


11、排序

dt.DefaultView.Sort = "column0 ,column1 ASC";
dt = dt.DefaultView.ToTable();

12、判断一个字符串是否为DataTable的列名

bool flag = dt.Columns.Contains("AX");

13、取值

复制代码

string str =dt.Rows[第几行]["字段名"].ToString(); 
string str =dt.Rows[第几行][第几列].ToString();//for循环for (int i = 0; i < dt.Rows.Count; i++)
{    string str = dt.Rows[i]["字段名"].ToString();    string str = dt.Rows[i][第几列].ToString();
}//foreach循环foreach (DataRow dr in dt.Rows)
{    string str = dr["字段名"].ToString();
}

复制代码

复制代码

//创建DataTable对象DataTable dt = new DataTable("Table_AX");//为DataTable创建列//方式一(我觉得这种好)dt.Columns.Add("column0", System.Type.GetType("System.String"));//方式二DataColumn dc = new DataColumn("column1", System.Type.GetType("System.Boolean"));
dt.Columns.Add(dc);//添加数据DataRow dr = dt.NewRow();
dr["column0"] = "AX";
dr["column1"] = true;
dt.Rows.Add(dr);            
//判断是否有数据if (dt.Rows.Count > 0)
{ //有}//查询DataRow[] drs = dt.Select("column1 is null");
DataRow[] drss = dt.Select("column0 = 'AX'"); 

//复制一个DataTable(有数据)DataTable dtNew = dt.Copy();//复制一个空的DataTable(无数据)DataTable dtOnlyScheme = dt.Clone();//给DataRow赋值的三种方式DataRow drOperate = dt.Rows[0];//方式一drOperate["column0"] = "AXzhz";
drOperate["column1"] = false;//方式二drOperate[0] = "AXzhz";
drOperate[1] = false;//方式三dt.Rows[0]["column0"] = "AXzhz";
dt.Rows[0]["column1"] = false;//方式四dt.Rows[0][0] = "AXzhz";
dt.Rows[0][1] = false;//把DataRow数据存到DataTable中dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray); 

//转成字符串System.IO.StringWriter sw = new System.IO.StringWriter();
System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(sw);
dt.WriteXml(xw);//此处DataTable必须有名字string s = sw.ToString();//筛选数据(详见DefaultView文章)dt.DefaultView.RowFilter = "column1 <> true";
dt.DefaultView.RowFilter = "column1 = true";//排序dt.DefaultView.Sort = "column0 ,column1 ASC";
dt = dt.DefaultView.ToTable();//绑定的其实是DefaultView//gvTestDataTable.DataSource = dt;//gvTestDataTable.DataBind();//判断一个字符串是否为DataTable的列名bool flag = dt.Columns.Contains("AX");

复制代码

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多