+++ 本例演示如何使用DataTable.Select()
protected void Page_Load(object sender, EventArgs e)
{
string connStr = "data source=ora11g; uid=scott; pwd=tiger; unicode=true";
string sqlStr = "SELECT * FROM EMP";
OracleDataAdapter da = new OracleDataAdapter(sqlStr, connStr);
DataTable dt = new DataTable();
da.Fill(dt);
#region 无参的Select
DataRow[] rows = dt.Select();
for (int i = 0; i < rows.Length; i++)
{
Response.Write(rows[i]["empno"] + " " + rows[i]["ename"]);
}
#endregion
#region 带一个参数的Select
string exp1 = "sal > 2000";
DataRow[] resRows1 = dt.Select(exp1);
for (int i = 0; i < resRows1.Length; i++)
{
Response.Write(resRows1[i][0]);
}
#endregion
#region 带两个参数的Select
string exp2 = "sal > 2000";
string sortOrder = "empno ASC";
DataRow[] resRows2 = dt.Select(exp2, sortOrder);
for (int i = 0; i < resRows2.Length; i++)
{
Response.Write(resRows2[i][0]);
}
#endregion
Response.Write("</br>");
#region 带三个参数的Select
DataTable myempDt = new DataTable("myemp");
myempDt.Columns.Add("empno", typeof(int));
myempDt.Columns.Add("ename", typeof(string));
myempDt.Columns["empno"].Unique = true;
myempDt.PrimaryKey = new DataColumn[] { myempDt.Columns["empno"] };
for (int id = 1; id <= 10; id++)
{
myempDt.Rows.Add(new object[] { id, string.Format("myemp_{0}", id) });
}
myempDt.AcceptChanges();
for (int id = 11; id <= 20; id++)
{
myempDt.Rows.Add(new object[] { id, string.Format("myemp_{0}", id) });
}
string expression = "empno > 10";
string sort = "ename ASC";
DataRow[] foundRows = myempDt.Select(expression, sort, DataViewRowState.Added);
PrintRows(foundRows, "过滤的行。");
foundRows = myempDt.Select();
PrintRows(foundRows, "所有行。");
#endregion
}
private void PrintRows(DataRow[] rows, string label)
{
Response.Write(label);
if (rows.Length <= 0)
{
Response.Write("没有此行。");
return;
}
foreach (DataRow row in rows)
{
foreach (DataColumn column in row.Table.Columns)
{
Response.Write(row[column] + " ");
}
}
}
+++ 说明
1) 该方法将返回获取DataRow对象的数组,这个对象数组相当于一个二维数组;
2) 该方法有四个重载的函数:
Select() 获取所有 DataRow 对象的数组。
Select(String) 按照主键顺序(如果没有主键,则按照添加顺序)获取与筛选条件相匹配的所有 DataRow 对象的数组。
Select(String, String) 获取按照指定的排序顺序且与筛选条件相匹配的所有 DataRow 对象的数组。
Select(String, String, DataViewRowState) 获取与排序顺序中的筛选器以及指定的状态相匹配的所有 DataRow 对象的数组。