Итак, у меня есть DataRelation
, как показано ниже:Как удалить все дочерние строки и родителей в DataSet?
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
, но это, казалось, не будет работать, потому что я думаю, что она удаляет всю таблицу, а время, в течение Еогеасп хотел продолжать, чтобы захватить еще одно значение из таблицы "Consecuente"
оно сломалось. Спасибо вам большое!
Вы читали [DataRow.Delete] (https://msdn.microsoft.com/en-us/library/system.data.datarow.delete%28v=vs.110%29.aspx? f = 255 & MSPPError = -2147217396) Замечания? Вы не можете использовать этот метод в цикле foreach. См. Также [this] (http://stackoverflow.com/questions/2341580/safely-removing-datarow-in-foreach) сообщение. –
true, вы не можете вызвать .Delete() в цикле foreach, но вы можете добавить строки, которые хотите удалить, в отдельный список, а затем вызвать delete после этого. Я отправлю ответ ... –