Autor Beitrag
dinazavric
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Di 07.06.11 09:59 
Hallo,

ich habe mit dem volgenden Code versucht, die Zeile, die eine bestimmte ID-Spalte haben, aus meinem DataSet zu löschen. Da das DataSet sich beim löschen ändert, kriegt man bei der nächsten DataRow eine Fehlermeldung. Deswegen habe ich es mit einer While-Schleife davor versucht. Das Problem ist aber nun, dass wenn eine DataRow nicht mit der ID übereinstimmt, bleibt founded=false und die Schleife wird damit beendet, bevor alle Rows durchgesucht worden. Gibt es denn eine bessere Methode? Vielen Dank im Voraus!

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
                bool founded = true;
                while (founded == true)
                {
                    founded = false;
                    foreach (DataRow dataRow in dataSetPro.Tables["ParameterSelect"].Rows)
                    {
                        if (dataRow["ProtocolID"].ToString() == ProtocolID.Text)
                        {
                            dataSetPro.Tables["ParameterSelect"].Rows.Remove(dataRow);
                            founded = true;
                        }
                        break;
                    }
                }
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 07.06.11 11:44 
Hallo,

zuersteinmal macht das 'break' an der Stelle gar keinen Sinn.
Besser und einfacher ist es, mittels 'break' aus der Schleife zu springen, wenn du die DataRow gelöscht hast:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
foreach (DataRow dataRow in dataSetPro.Tables["ParameterSelect"].Rows)
{
    if (dataRow["ProtocolID"].ToString() == ProtocolID.Text)
    {
       dataRow.Table.Rows.Remove(dataRow); // kleine Verbesserung ;-)
       break;
    }
}

Für diesen Beitrag haben gedankt: dinazavric
dinazavric Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Di 07.06.11 11:52 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
zuersteinmal macht das 'break' an der Stelle gar keinen Sinn.
Besser und einfacher ist es, mittels 'break' aus der Schleife zu springen, wenn du die DataRow gelöscht hast:


Danke! War eigentlich logisch ;-)