Wie löscht man mehrere Zeilen aus Datentabelle in VB.NET 2008 ohne Schleifen?
Select
und auch Remove
und entferne sie auch bei der Methode. Aber das erfordert Schleifen, um die Zeilen aus der Datentabelle zu löschen. Ich habe 40000 Zeilen und möchte ausgewählte 1000 Zeilen aus dieser Datentabelle löschen.
Ich weiß nicht, dass das auf eine direkte Art und Weise gemacht werden kann. Es gibt keinen Löschbefehl für die Datentabelle, der dies tut.
Sie könnten so etwas versuchen. Sie wählen die Datensätze aus, die Sie in einer temporären Tabelle behalten möchten, löschen die ursprüngliche Tabelle und fügen dann die temporäre Tabelle wieder in das Original ein.
%Vor%Das ist die beste Antwort auf die Frage, die mir einfällt. Es sieht so aus, als ob Sie die Datentabelle auf ungewöhnliche Weise verwenden. Im Allgemeinen sollten Sie die Datensätze zunächst nicht auffüllen oder sie ausfiltern, wenn Sie den Inhalt an seinem Ziel speichern. Sei es eine XML-Datei, SQL oder was auch immer.
Sicherlich wäre die Schleifenmethode die effizienteste. Dies ist wahrscheinlich nicht die schnellste Methode, aber für nur 4K Zeilen ist es wahrscheinlich gut genug.
Wir können immer eine gespeicherte Prozedur schreiben, um ADO.NET-Entity-Framework oder LINQ to SQL-Roundtrips in einigen Fällen zu optimieren. Der Nachteil ist, dass dieses Modell etwas uneinheitlich aussieht. Ich frage mich auch, ob es einen besseren Weg gibt:)
Danke, Bremer, das ist der optimale Code zum Löschen von Zeilen in einer Datentabelle, für mich ist das die schnelle Methode:
Vielleicht würde DataView einen Trick machen. Sie können beispielsweise Zeilen, die Sie in DataView behalten möchten, herausfiltern, die Ansicht in eine Tabelle konvertieren und die Anfangstabelle verwerfen. Dann hast du deinen Tisch mit den benötigten Reihen.
%Vor%Lass es mich wissen, wenn es für dich funktioniert.
Ich bin nicht sicher, ob dies offiziell als eine Schleife zu verwenden, aber hier ist eine Lösung mit LINQ:
%Vor%TBH, ich bin mir nicht sicher, ob es einen Weg gibt, dies zu tun, ohne die Zeilen auf irgendeiner Ebene zu durchlaufen. Entweder Sie durchlaufen die Zeilen, löschen die, die Sie nicht möchten, oder erstellen eine neue Tabelle, die mit allem außer den Zeilen gefüllt ist, die Sie nicht möchten. Es sollte jedoch angemerkt werden, dass NET selbst im späteren Fall wahrscheinlich die Zeilen durchläuft, um zu bestimmen, ob die Zeile in der Wächter-Tabelle enthalten sein sollte.
Ich denke, du solltest LINQ dafür benutzen. Sie erhalten eine Datentabelle aus dem Dataset und schreiben eine LINQ-Abfrage, um eine Zeile zu löschen, die Ihren Kriterien entspricht.
Sie müssen also keine Schleife dafür machen.
Hier sind einige Links, die Ihnen helfen könnten.
Verwenden Sie eine SQL-Anweisung in einem ADO.NET-Befehlsobjekt. Wahrscheinlich haben die Zeilen, die Sie löschen möchten, etwas gemeinsam.
%Vor% Sie können DeleteAllOnSubmit () aufrufen, wenn Sie Verwenden Sie LINQ to SQL . Dies wird jedoch für jede gelöschte Entität eine DELETE-Anweisung senden, was sehr ineffizient ist. Sie könnten
Übrigens, du bist eine Frage, die sehr generisch ist. Meine erste Neigung war, eine WHERE-Klausel zu empfehlen.