如何删除DataSet中的所有子行和父项?

时间:2016-03-17 19:49:03

标签: c#

所以,我有一个DataRelation,如下所示:

Oraciones1 = new DataRelation("Antecedentes",
        dsPubs.Tables["Consecuente"].Columns["Id"],
        dsPubs.Tables["Antecedentes"].Columns["Id"]);
        dsPubs.Relations.Add(Oraciones1);

其中dsPubsdsPubs = new DataSet(),并且DataSet有两个表,两个表都有数据关系。然后;我正在迭代父母以获得孩子,只是为了完成一些任务,如下所示:

foreach (DataRow rowAuthor in dsPubs.Tables["Consecuente"].Rows) {             
    foreach (DataRow rowTitle in rowAuthor.GetChildRows(Oraciones1)) {

    }
}

我想要做的是从一个通过函数(即)传递的指定值中删除所有子元素和父元素。

public void function(string value ){
  foreach (DataRow rowAuthor in dsPubs.Tables["Consecuente"].Rows){             
             foreach (DataRow rowTitle in rowAuthor.GetChildRows(Oraciones1){

                        if(value==rowTitle["id_d"].ToString()){
                          //remove all the child and the parent from the specified variable "value"   
                       }

                    }
                }

}

我试图通过使用rowTitle.Delete() and rowAuthor.Delete() method来完成它,但它似乎不起作用,因为我认为它删除了整个表,并且时间foreach想要继续从表中获取另一个值{ {1}}它崩溃了。 非常感谢!!

1 个答案:

答案 0 :(得分:0)

var innerRows = new List<DataRow>();
var outerRows = new List<DataRow>();

foreach (DataRow rowAuthor in dsPubs.Tables["Consecuente"].Rows)
{
   foreach (DataRow rowTitle in rowAuthor.GetChildRows(Oraciones1))
   {
      if (value == rowTitle["id_d"].ToString())
      {
         //remove all the child and the parent from the specified variable "value"   
         innerRows.Add(rowTitle);
         outerRows.Add(rowAuthor);

      }

   }
 }

foreach(DataRow row in innerRows)
{
   row.Delete();
}

foreach (DataRow row in outerRows)
{
   row.Delete();
}