Datatable数据类型介绍
简介:
这里介绍个在开发中经常用到的数据类型,数据类型为datatable。从数据库中查出的数据存放在datatable,但是很多情况下需要对查出的数据处理,这就需要积累些datatable方法,这样开发会更快。
方法介绍
用法一、声明一个datatable类型
通过声明自己创建一个datatable类型,并填充数据
DataTable dt = newDataTable();
dt.Columns.Add("Username");
dt.Columns.Add("Level", typeof(int));
dt.Rows.Add("John", 1);
dt.Rows.Add("Cait", 2);
如果datatable已经存在了创建一个同结构的
DataTable dtNew = dt.Clone();
带着数据:
DataTable dtNew = dt.Copy();
用法二、合并两个结构相同的datatable
有的时候是分批来的要一起显示到通过控件中(比如gridview控件)
直接合两个表格
DataTable dt1 = newDataTable();
DataTable dt2 = newDataTable();
dt1.Merge(dt2);
但有的时候需要经过遍历按照条件把一个表中的某些行添加到另一张表中
foreach (DataRow dr in dt1.Rows)
{
if (Convert.ToInt32(dr["Level"] )== 1)
{
dt2.Rows.Add(dr.ItemArray);
}
}
用法三、datatable中数据的计算
有的时候需要对datatable中的数据进行计算,比如
聚合计算:
DateTime StartTime = Convert.ToDateTime((dt.Compute("min(DateMonth)", string.Empty)));
DateTime EndTime = Convert.ToDateTime((dt.Compute("max(DateMonth)", string.Empty)));
这里是对时间类型类进行聚合得到最大时间和最小时间。
数据行过滤:
DataTable dt = newDataTable();
dt.Columns.AddRange(newDataColumn[] { newDataColumn("name", typeof(string)),
newDataColumn("sex", typeof(string)),
newDataColumn("score", typeof(int))
});
dt.Rows.Add(newobject[] { "李四", "男", 20 });
dt.Rows.Add(newobject[] { "张三", "男", 1 });
dt.Rows.Add(newobject[] { "张三", "男", 4 });
dt.Rows.Add(newobject[] { "李四", "男", 100 });
dt.Rows.Add(newobject[] { "李四", "女", 90 });
dt.Rows.Add(newobject[] { "王五", "女", 77 });
数据过滤的到行,
for (int i = 0; i < dtName.Rows.Count; i++)
{
DataRow[] rows = dt.Select("name=李四");
}
数据列过滤
DataTable dtName = dt.DefaultView.ToTable(true, "name", "sex");
用法四:两种遍历datatable的方法
foreach (DataRow dr in dt2.Rows)
{
Console.Write(dr["Username"]);
Console.Write(dr["Level"]);
Console.WriteLine();
}
for (int i = 0; i < dt1.Rows.Count; i++)
{
dt1[i][""]
}