在操作DataTable 的时候,还会遇到一个常见的问题,对于DataTable中的某些行修改了状态,
我是指的人工显式的修改了,例如如下的代码:
//对于新的表增加一个状态列,表明是否访问过
DataTable tempTable = dtDataTable[i].Copy();
tempTable.Columns.Add("Visited",typeof(bool));
foreach(DataRow tempRow in tempTable.Rows)
{
tempRow["Visited"] = false;
}
//然后对于某些行进行操作,同时修改了状态
foreach(DataRow aDataRow in tempTable.Rows)
{
if(aDataRow["StepNo"].ToString())
{
aDataRow["TotalPrice"]=0;
aDataRow["Visited"] = true;
}
}
那么最后tempTable中就会有一些Row的列Visited = false的。如何找到这些列呢?
当然就与本文的题目对应
DataRow []unVisitedRows = tempTable.Select("Visited = false");
显然他返回的是一个DataRow的数组,接下来如何对数组中的每个行如何操作,就不用说了。有一点要注意的是我的
上一个Blog中提到的
DataSet,DataTable.DataRow复制方法——解决:此行已属于另一个表
另外,public DataRow[] Select( string filterExpression)
filterExpression 这个参数还可以使用 and ,or 等等操作符,例如:filterExpression
= " id='D' or stepnt<>'' " 。