俄罗斯贵宾会-俄罗斯贵宾会官网
做最好的网站

在DataTable中查找【俄罗斯贵宾会】

C#DataTable一些使用方法

  1. 使用Select方法查找没有主键的表
    DataTable的Select方法返回一个DataRow数组,有四个重载的函数。

  1,使用DataTable必须要引用System.Data.

DataView prodView = new DataView(prodDS.Tables["Products"],
                                  "UnitsInStock <= ReorderLevel",
                                  "SupplierID, ProductName",
                                  DataViewRowState.CurrentRows);

  2,定义一个DataTable

  1. 使用Find方法查找有主键的表
DataTable dt=new DataTable();

分两种情况:

 3,为DataTable创建列

(1) 主键只有一个字段
DataRow dr = dt.Rows.Find("主键字段的值");

//1.创建空列
DataColumn dc = new DataColumn();
dt.Columns.Add(dc);
//2.创建带列名和类型名的列
dt.Columns.Add("column0", typeof(String));
//3.通过列架构添加列
DataColumn dc = new DataColumn("column1", typeof(String));
dt.Columns.Add(dc);

(2) 主键有多个字段
例如,表的主键由一个整型字段ID和一个字符类型自动Name组成,以下代码查找满足ID=10且Name="张三"条件的记录。
Object[] objs = new Object[]{10,"张三"};
dr = dt.Rows.Find(objs);

 4,为DataTable创建行

二、使用DataView筛选数据

//1.创建空行
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
//2.创建空行
dt.Rows.Add();
//3.通过行框架创建并赋值
dt.Rows.Add("小明",18);//Add里面参数的数据顺序要和dt中的列的顺序对应 
//4.通过复制dt2表的某一行来创建
dt.Rows.Add(dt2.Rows[i].ItemArray);

DataView可以看成DataTable中的记录加上某种条件后得到的数据。DataView依附于DataTable,每个DataTable都至少有一个DataView。数据绑定中控件绑定到的其实不是DataTable,而是DataTable的DefaultView。

 5,DataTable的取值和赋值

DataView常用的数据筛选方法有:

//新建行的赋值
DataRow dr = dt.NewRow();
dr[0] = "小明";//通过索引赋值
dr["column1"] = DateTime.Now; //通过名称赋值
//对表已有行进行赋值
dt.Rows[0][0] = "小明"; //通过索引赋值
dt.Rows[0]["column1"] = DateTime.Now;//通过名称赋值
//取值
string name=dt.Rows[0][0].ToString();
string time=dt.Rows[0]["column1"].ToString();
  1. 筛选特定状态的行

 6,DataTable的筛选行和删除行

以下代码找出所有新加的行:
dv.RowStateFilter = DataViewRowState.Added;

//select用法
//筛选姓名列值中有"小"的行的集合(模糊查询),第二句可添加按年龄降序排序
DataRow[] dr = dt.Select("姓名 like '小%'");
DataRow[] drs = dt.Select("姓名 like '小%'", "年龄 DESC");
  1. 使用Sort属性,可以指定单个或多个列进行排序,如:
    dv.Sort = "Name ASC,ID DESC";

  2. 使用RowFilter属性动态筛选记录。
    dv.RowFilter = "Name LIKE '张%'";

  3. 使用Find和FindRows在DataView中查找。

//Compute用法

俄罗斯贵宾会,使用这两个方法,是按照行的排序关键字值来对行进行搜索的。

   Object result = dt.Compute("sum(成绩)", "年龄>16 and 姓名 like '小*'");

Find方法返回一个整数,表示匹配搜索条件的DataRowView的索引。如果多行匹配,只返回一个匹配行索引,如果未找到匹配项,返回-1。

 //result为计算出的结果,compute函数的第一个参数一般为聚合函数,后一个参数为筛选条件

若要返回匹配多个行的搜索结果,可以使用FindRows方法。它返回DataView中的所有匹配行的DataRowView数组。如果未找到匹配项,DataRowView数组为空。

 

若要使用Find或FindRows方法,必须通过将ApplyDefaultSort设置为true或通过使用DataView对象的Sort属性来指定排序顺序,否则将引发异常。这两种方法将一个值数组用做输入,该数组的长度与排序顺序包含的列数相匹配。当对多个列进行排序时,对象数组的值必须匹配在DataView的Sort属性中指定的列的顺序。

//Find用法

对具有单个列排序顺序的DataView调用Find方法。
dv.Sort = "Name";
int rowIndex = dv.Find("张三");
如果Sort属性指定多个列,则必须按照Sort属性指定的顺序为每个列传递包含搜索值的对象数组。
dv.Sort = "Name,ID";
DataRowView[] foundRows = dv.FindRows(new Object[]{"张%","001"});

dt.PrimaryKey = new DataColumn[] { dt.Columns["学号"] };

原文http://hi.baidu.com/kxlf4600/blog/item/232da30117f433d3277fb5d3.html

 DataRow dr1 = dt.Rows.Find("004");

//Find用法要求datatable有主键,是一种按主键搜寻一行数据的方法

 

 

 

//删除行

本文由俄罗斯贵宾会发布于编程,转载请注明出处:在DataTable中查找【俄罗斯贵宾会】

您可能还会对下面的文章感兴趣: