日期:2014-05-17  浏览次数:20953 次

如何操作数据集中的数据
如果我从一个表中得到一个数据集
DataSet   ds   =   new   DataSet();
string   sqlstr   =   "select   a,   b,   c   from   table1   where   a   =   'test1 ' ";
using(OleDbConnection   conn   =  
new   OleDbConnection(ConfigurationManager.AppSettings[ "oracleconnectionString "].ToString()))
{
OleDbDataAdapter   dataAdapter   =   new   OleDbDataAdapter(sqlstr,   conn);
dataAdapter.Fill(ds,   "TEST ");
}
我想拿出数据集中的TEST表的某些行并再增加记录
比如:
select   a,   b,   c   from   table1   where   a   =   (select   a   from   TEST   where   c   =   1)//拿出该数据集中的一条记录(假设C字段是主键)作为条件,又得到一个记录集
怎么把这个记录集又增加到dataset的TEST表中
菜鸟问题,毕业几年没动过C#了,开始又没学好,惭愧,我在数据库通过一个临时表用存储过程可以做到这一点,请各位高手指教.

------解决方案--------------------
DataView 为在 DataTable 中对数据排序和筛选提供了多种方法:

可以使用 Sort 属性指定单个或多个列排序顺序并包含 ASC(升序)和 DESC(降序)参数。

可以使用 ApplyDefaultSort 属性自动以升序创建基于表的一个或多个主键列的排序顺序。只有当 Sort 属性为空引用或空字符串时以及表已定义主键时,ApplyDefaultSort 才适用。

可以使用 RowFilter 属性根据行的列值来指定行的子集。有关 RowFilter 属性的有效表达式的详细信息,请参见有关 DataColumn 类的 Expression 属性的参考信息。

如果要返回对数据的特定查询的结果(而不是提供数据子集的动态视图),要实现最佳性能,请使用 DataView 的 Find 或 FindRows 方法,而不是设置 RowFilter 属性。设置 RowFilter 属性会重新生成数据的索引,从而增加应用程序的系统开销并降低性能。最好将 RowFilter 属性用于通过绑定控件显示筛选结果的数据绑定应用程序。Find 和 FindRows 方法会利用当前的索引,而不需要重新生成索引。有关 Find 和 FindRows 方法的更多信息,请参见搜索 DataView。

可以使用 RowStateFilter 属性指定要查看的行版本。DataView 根据基础行的 RowState 来隐式地管理要公开的行版本。例如,如果 RowStateFilter 设置为 DataViewRowState.Deleted,由于不存在 Current 行版本,DataView 将公开所有 Deleted 行的 Original 行版本。可以使用 DataRowView 的 RowVersion 属性来确定要公开行的哪个行版本。

下表显示了 DataViewRowState 选项。


msdn提供的信息,lz不妨找找dataview 构造函数