So löschen Sie mehrere Zeilen aus der datatable in VB.NET 2008?
So löschen Sie mehrere Zeilen aus der datatable in VB.NET 2008 ohne Schleife?
- Ich will nicht aus der Datenbank zu löschen.
- Ich Sie löschen möchten, aus der lokalen Datentabelle.
- Ich weiß, die
Select
Methode und auchRemove
und entfernen Sie in der Methode zu. Aber das muss Schleife zum löschen der Zeilen aus der Datentabelle.
Habe ich 40000 Zeilen und ich möchte Sie auf Auswahl löschen, 1000 Zeilen aus, die Daten-Tabelle.
- Wie sind Sie mit der Bestimmung der 1000 der 4000 Zeilen zu löschen?
- Das ist meine Frage,gibt es eine Möglichkeit, die Zeilen bestimmt, die für die Löschung ?
- Könnten Sie zu Ihrer Frage .NET-Klasse, die Sie verwenden, um die Darstellung der Daten im Speicher? Ist es DataSet oder einer anderen Klasse? Oder kann ich formulieren die Frage: verwenden Sie das SqlDataAdapter-Objekt oder LinkToSql Oder Entity Framework zum Zugriff auf die Datenbank? Für jeden Weg kann man schreiben, eine Lösung, aber ich will nicht zu schreiben verschiedene Versionen des Kodex-wenn Sie benötigen nur eine. Eine kleine Beispiel-Datenbank-Tabelle (2-3 Felder) könnten auch sehr gut, dann werde ich auf die Verwendung dieser Bereich in meinem code-Beispiel.
- es dataset-oder datatable, die ich habe mit.
- Warum wollen Sie, Sie zu löschen, ohne Schleife? Ist es ein performance-Problem? Ursache es dauert nur ein paar Millisekunden zu löschen, die 1000 Zeilen aus einem 4000-Zeilen-datatable.
- Ihr Ruf wurde neu berechnet, wie gewünscht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, dass dies getan werden kann, in einer einfachen Art und Weise. Es gibt keine delete-Befehl auf die datatable, die dies tun wird.
Könnten Sie versuchen, so etwas wie dieses. Wählen Sie die Datensätze, die Sie behalten möchten, in eine temp-Tabelle, löschen Sie die ursprüngliche Tabelle, und führen dann die temp-Tabelle wieder in die ursprüngliche.
Das ist die beste Antwort auf die Frage, die ich mir denken kann. Es scheint, wie Sie können mit der Datentabelle in einer ungewöhnlichen Art und Weise. Sie sind in der Regel am besten aus, nicht das Auffüllen der Aufzeichnungen zu beginnen, oder filtern Sie aus, wenn Sie den Inhalt speichern, um es Ziel. Sei es eine XML-Datei, SQL oder was auch immer.
Sicherlich, die loop-Methode wäre die effizienteste. Dies ist wahrscheinlich nicht die Schnellste Methode, aber nur für 4K Zeilen, es ist wahrscheinlich gut genug.
Wenn Sie möchten, um alle Zeilen zu entfernen, können Sie die
Clear
- Methode der datatable.Sein kann, um zu verwenden, DataView wäre ein trick. Zum Beispiel, können Sie Sie filtern Sie Zeilen, die Sie behalten möchten, in DataView, konvertieren Ansicht auf Tabelle, und entsorgen Sie die ursprünglichen Tabellen. Dann haben Sie Ihre Tabelle mit den Zeilen, die Sie benötigt.
Lassen Sie mich wissen, wenn es für Sie arbeitet.
Ich bin mir nicht sicher, ob dies offiziell zu qualifizieren, als mit einer Schleife, aber hier ist eine Lösung mit LINQ:
TBH, ich bin mir nicht sicher, es ist ein Weg, dies zu tun, ohne die Schleife durch die Zeilen auf einer Ebene. Entweder Sie Schleife über die Zeilen löschen die, die Sie nicht wollen, oder erstellen Sie eine neue Tabelle, die alles außer den Zeilen, die Sie nicht wollen. Es sollte jedoch darauf hingewiesen werden, dass auch in den späteren Fall NET ist wahrscheinlich die Schleife durch die Zeilen, um zu bestimmen, ob die Zeile sollte in der keeper-Tabelle.
Ich denke, Sie sollten verwenden von LINQ für die. Sie erhalten datatable aus dem dataset und schreiben Sie eine LINQ-Abfrage auf Zeile löschen, die Ihren Kriterien entsprechen.
So dass Sie nicht brauchen, um eine Schleife für das.
Hier sind einige links, die Ihnen helfen könnten.
Verwenden Sie eine SQL-Anweisung innerhalb einer ADO.NET command-Objekt. Obvoiusly die Zeilen, die Sie löschen möchten haben etwas gemeinsam.
Können Sie anrufen DeleteAllOnSubmit() wenn Sie LINQ to SQL. Dies wird jedoch senden einer DELETE-Anweisung für jede Entität gelöscht wird, das ist höchst ineffizient. Sie konnte immer Gabel LINQ to SQL, oder verwenden Sie eine gespeicherte Prozedur.
BTW, bist du Frage ist sehr allgemein. Meine erste Neigung war zu empfehlen, die eine WHERE-Klausel.
Können wir immer schreiben, eine gespeicherte Prozedur zu optimieren ADO.NET entity-framework oder LINQ to SQL-Rundfahrten in einigen Fällen. Der Nachteil ist, dass das Modell beginnt die Suche ein bisschen unconsistent.
Auch ich Frage mich, ob es einen besseren Weg gibt 🙂
Dank Bremer, dies ist der optimale code zum löschen von Zeilen in einer datatable für mich ist die schnelle Methode:
HTML: