Element aus DataTable entfernen (ForEach – Schleife) – Problem: Die Auflistung wurde geändert

Bei einem Foreach dar man kein Remove machen, aber es geht viel einfacher.

Wichtig ist, dass man die Auflistung rückwärts durchläuft, hier das Beispiel:

DataTable dt = new DataTable();
dt.Columns.Add(“Test”);

DataRow dr1 = dt.NewRow();
dr1[“Test”] = “Hallo1”;
dt.Rows.Add(dr1);

DataRow dr2 = dt.NewRow();
dr2[“Test”] = “Hallo2”;

DataRow dr3 = dt.NewRow();
dr3[“Test”] = “Hallo3”;

DataRow dr4 = dt.NewRow();
dr4[“Test”] = “Hallo4”;

DataRow dr5 = dt.NewRow();
dr5[“Test”] = “Hallo5”;

dt.Rows.Add(dr2);
dt.Rows.Add(dr3);
dt.Rows.Add(dr4);
dt.Rows.Add(dr5);

var Rows = dt.Rows;

for (int i = Rows.Count -1; i > 0; i–)
{
DataRow dr = (DataRow)Rows[i];
if (dr[0].ToString() == “Hallo3”)
{
dt.Rows.Remove(dr);
}
}

Leave a Comment