方案一:

DataSet dsTemp = new DataSet();
dsTemp = dsDt.Clone();
DataRow[] drs = dsDt.Tables[0].Select("CHECKED='1'");
foreach (DataRow dr in drs)
{
dsTemp.Tables[0].NewRow();
dsTemp.Tables[0].Rows.Add(dr.ItemArray);
}
dsDt.AcceptChanges();

小注:

         1、AcceptChanges和RejectChanges:接受或放弃DataSet中所有挂起更改。调用AcceptChanges时,RowState属性值为Added或Modified的所有行的RowState属性都将被设置为UnChanged.任何标记为Deleted的DataRow对象将从DataSet中删除。调用RejectChanges时,任何标记为Added的DataRow对象将会被从DataSet中删除,其他修改过的DatRow对象将返回前一状态。

        2、ItemArray:获取或设置行中所有列的值。

Clone和Copy:使用Copy方法会创建与原DataSet具有相同结构和相同行的新DataSet.使用Clone方法会创建具有相同结构的新DataSet,但不包含任何行。

NewRow() 创建与该表具有相同架构的新DataRow。

方案二:

DataSet dsTemp = new DataSet();
dsTemp.Merge(dsDt.Tables[0].Select("CHECKED='1'"));

小注:

        Merge:从另一个DataSet、DataTable或现有DataSet中的一组DataRow对象载入数据。