ASP.NET基础教程-在DataTable对象中过滤与排序DataRow对象

要过滤与排序DataTable对象中的DataRow,用DataTable的Select()方法,Select()方法调用:

DataRow[] Select()

DataRow[] Select(string filterExpression)

DataRow[] Select(string filterExpression,string sortExpression)

DataRow[] Select(string filterExpression,string

SortExpression,DataViewRowState myDataViewRowState)

其中:

filterExpression:

指定要选择的行 sortExpression:指定选择的行如何排序

myDataViewRowState:

指定要选择的行的状态,可以将myDataViewRowState设置为System.Data.DataViewRowState枚举中定义的常量之一:

例代码如下:

//打开数据库

con.Open();

//SQL语句

string oSql="select id,name,station,level,dept from verify";

//从数据库中提取数据

SqlDataAdapter da=new SqlDataAdapter(oSql,con);

//创建并声明记录集对象

DataSet ds=new DataSet();

//将数据库提取出的数据加载到记录集

da.Fill(ds,"verify");

//关闭数据库

con.Close();

//从记录集中获取表对象

DataTable dt=ds.Tables[“verify”];

//返回DataTable中所有行,不进行任何过滤和排序

DataRow[] dr=dt.select();

//使用过滤表达式,只返回dept ,DataColumn值等于信息组的DataRow对象

DataRow[] dr=dt.select(“dept=‘信息组’”);

//使用过滤和排序表达式按降序将DataRow对象排序

DataRow[] dr=dt.select(“dept=‘信息组’”,“id desc”);

//以原行进行过滤和排序

DataRow[] dr=dt.select(“dept=‘信息组’”,“id desc”,DataViewRowState.OriginalRows);

//循环将行集中的内容在页面上输出输出

foreach(DataRow datarow in dr)

{

Response.Write(datarow["name"].ToString()+"<br>");

Response.Write(datarow["station"].ToString()+"<br>");

Response.Write(datarow["level"].ToString()+"<br>");

Response.Write(datarow["dept"].ToString()+"<br>");

}

过滤与排序表达式与SELECT语句的WHERE与ORDER BY从句相似,因此可以在调用SELECT()方法进使用非常强大的表达式.

例如:

可以在过滤表达式中使用AND、OR、NOT、IN、LIKE、比较运算符、算术运算符、通配符和聚合函数。

-----------------------------------------------------------------------------------------------

语法如下如下:

//创建一个过滤条件的字符串

string filter = "字段名='"+条件+"'";

//取出符合条件的记录

DataRow[] rows = DataTable.Select(filter);

这样记录就过滤出来了。

-----------------------------------------------------------------------------------------------

SqlConnection sqlconn = new SqlConnection(connString);

SqlDataAdapter sqladp = new SqlDataAdapter(sql, sqlconn);DataSet ds = new DataSet();sqladp.Fill(ds);

foreach (DataRow dr in ds.Tables[0].Rows)Console.WriteLine(dr[0].ToString()+" "+dr[1].ToString());