所以,我有一个DataRelation
,如下所示:
Oraciones1 = new DataRelation("Antecedentes",
dsPubs.Tables["Consecuente"].Columns["Id"],
dsPubs.Tables["Antecedentes"].Columns["Id"]);
dsPubs.Relations.Add(Oraciones1);
其中dsPubs
是dsPubs = 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}}它崩溃了。
非常感谢!!
答案 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();
}