DataTable对象的搜索,排序
基于主键的查找
DataTable tb=new DataTable();
//设置主键
tb.PrimaryKey=new DataRow[]{tb.Columns["priKey"]};
DataRow row=tb.Rows.Find("...");
//多列约束的查找
tb.PrimaryKey=new DataRow[]{tb.Columns["priKey1"],tb.Cloumns["priKey2"]};
object obj=new object[]{"key1","key2"};
DataRow row=tb.Rows.Find(obj);
动态查找
DataRow[] rows=tb.Select("id=001 and name='xiaoming'");
//Slect返回的是DataRow数组 ""内字段相当与sql中的where之句
DataViewRowState dvrs=DataViewRowState.ModifiedOriginal|DataViewRowState.Deleted;
DataRow[] rows=tb.Select("where","order by".dvrs);
//DataRow.Select()方法是重载的,order by是sql中order by子句,dvrs是tb中row值状态的枚举
DataView对象搜索,排序
首先说明DataView 对象不维护自己的数据副本,等通过DataView访问数据时,DataView将返回DataTable中的数据.
Find方法
DataView对象的Find方法返回的不是DataRow或DataRowView对象,而返回DataView中符合条件的整形索引,不满足Find条件即返回-1;
DataView vue=new DataView(tb);
vue.Sort="ColumnKey";
int rowsIndex=vue.Find("...");
if(rowsIndex==-1)
//not found
else
//found; write(vue[rowsIndex]["..."]);
Finds方法,获取多值
vue.Sort="ColumnKey";
DataRow[] rows=vue.FindRows("...");
if(rows.Length==0)
//not found
else
//foreach 获取
foreach(DataRowView row in rows)
Console.Write(row["..."]);
DataRowView对象的修改
DataView vue=new DataView(tb);
//添加新行
DataRowView row=vue.AddNew();
row[".."]="..";
........
row.EndEdit();
//修改行
row.BeginEdit();
row["..."]="...";
row.EndEdit();
//删除行
row.Delete():
DataView中的Select方法
DataViewRowState dvrs=DataViewRowState.ModifiedOriginal|DataViewRowState.Deleted;
DataView vue=new DataView(tb,"where","order by",dvrs);
或
DataView vue;
vue.Table=tb;
vue.RowFilter="where";
vue.Sort="order by";
vue.RowStateFilter=dvrs;