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.WriteXml("xml文件路径");

//读取XML文件内容到DataTable(直接用DataTable自己的读取xml方法会报错)
DataSet ds = new DataSet();
ds.ReadXml("xml文件路径");
DataTable table = ds.Tables[0];

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);
}
发布了45 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/sinat_32857543/article/details/102972205