c#中DataTable还是比较方便的,我收集整理了一些常用方法。
- 新建表格
DataTable dt=new DataTable();//可以带String参数,表示表名。
DataTable dt=new DataTable(“student”); - 向表中添加字段
DataColumn dc = new DataColumn(“商品编号”, typeof(system.string));
dt.Columns.Add(dc);//数据库的Nvarchar等类型,在此可用String兼容,可不指明数据类型 - 设置表特定行和列指定数据
dt.Rows[i].SetField(dc, int.Parse(要添加的int数据); - 将数据加入到表
dt.Rows.Add(dr.ItemArray);//dr为DataRow类型 - 合并表
DataTable ds=car.getGoods(v); //从数据库里读出的表
dt.Merge(ds); //将 ds 表合并到表 dt - 复制表
dt = dt2.Clone(); - Compute()
函数的参数就两个:Expression,和Filter。Expresstion是计算表达式, Filter是条件过滤器,类似sql的Where条件。
table.Compute(“sum(value)”, “”); //求和
table.Compute(“avg(value)”, “”); //平均
table.Compute(“min(value)”, “”); //最小
table.Compute(“max(value)”, “”); //最大
table.Compute(“Avg(身高)”, “年龄 > 22 AND 姓名 LIKE ‘李*’”); - 利用DataTableReader对象遍历DataTable
using(DataTableReader reader = this.dt.CreateDataReader()){
do
{
if (!reader.HasRows)
{
Console.WriteLine("没有数据");
}
else
{
Console.WriteLine("===============开始读取数据===============");
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
Console.Write(reader[i] + " ");
}
Console.WriteLine("");
}
Console.WriteLine("===============读取数据完成===============");
}
} while (reader.NextResult());
}
- 用DataTable.Select方法筛选一行或多行数据
DataRow[] resultArray = this.dt.Select("姓名 is NULL");
for (int i = 0; i < resultArray.Length; i++)
{
Console.WriteLine("姓名为空的ID:" + resultArray[i][0]);
}
- 用DataTable.Find方法筛选一行数据,例如根据DataTable的主键查找1行数据
DataRow dr = this.dt.Rows.Find("14109");
if (null != dr)
{
Console.WriteLine("学号为14109的学生姓名为:" + dr[1].ToString());
}
- 表格创新代码
DataColumn dc1 = new DataColumn("编号");
DataColumn dc2 = new DataColumn("名称");
DataColumn dc3 = new DataColumn("数量");
DataColumn dc4 = new DataColumn("价格");
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
dt.Columns.Add(dc4);
TemplateField fd = new TemplateField();
fd.HeaderText = "数量";
if (hc != null)
{
for (int i = 0; i < hc.Values.Count; i++)
{
string c = hc.Values.Keys[i];
string v = c.Replace("goodName", "");
DataTable ds=car.getGoods(v);
DataRow dr=ds.Rows[0];
//dt.Merge(ds);
dt.Rows.Add(dr.ItemArray);
dt.Rows[i].SetField<int>(dc3,int.Parse( hc.Values[i]));
}
GridView1.DataSource = dt;
GridView1.DataKeyNames = new string[] {"编号"};
GridView1.DataBind();
dt.Dispose();
}