C# DataTable使用方法详解(二)

1.DataTable合并

// 一般方法,性能不好
DataTable[] srcTables = ... ;
foreach( DataTable src in srcTables )
{
dest.Merge( src ) ;
}
 
// 推荐方法,速度是上面的100倍
DataTable[] srcTables = ... ;
foreach( DataTable src in srcTables )
{
foreach( DataRow row in src.Rows)
{
dest.ImportRow( row ) ; 
}
}

2.DataTable过滤

// 一般方法,性能不好
DataView dv = dt.DefaultView ;
dv.RowFilter = filter ;
DataTable result = dv.ToTable() ;
 
// 推荐方法,有数十倍的性能提高。
DataRow[] rows = dv.Select( filter ) ;
foreach( DataRow row in rows )
{
result.ImportRow(row) ;
}

3.DataTableReader使用

using (DataTableReader dr = dt.CreateDataReader())
{
	while (dr.Read())
	{
		int len = dr.FieldCount;
		for (int i = 0; i < len; i++)
		{
			System.Console.Write("{0}\t,", dr.GetValue(i));
		}
		System.Console.WriteLine();
	}
}

3.DataTable与XML相互转换

//DataTable写入到XML
dt.WriteXmlSchema("xmlSchema文件路径");
dt.WriteXml("xml文件路径");

//读取XML文件内容到DataTable  
DataTable table = new DataTable();
table.ReadXmlSchema("xmlSchema文件路径");
table.ReadXml("xml文件路径");

4.DataTable 间创建 Relation

private void MakeDataTableRelation()
{
	DataTable student = new DataTable();
	student.Columns.Add("ID", typeof(int));
	student.Columns.Add("Name", typeof(string));
	student.Rows.Add(1, "张三");
	student.Rows.Add(2, "李四");
	student.Rows.Add(3, "王五");

	DataTable score = new DataTable();
	score.Columns.Add("ID", typeof(int));
	score.Columns.Add("Score", typeof(int));
	score.Rows.Add(1, 50);
	score.Rows.Add(2, 60);
	score.Rows.Add(3, 70);

	// student,score必须放到DataSet中才能创建DataRelation
	DataSet ds = new DataSet();
	ds.Tables.AddRange(new DataTable[] { student, score });

	DataRelation relation = new DataRelation("stu_score", student.Columns[0], score.Columns[0]);
	student.ChildRelations.Add(relation);
}

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值