要过滤与排序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());