Wie löscht man mehrere Zeilen aus der Datentabelle in VB.NET 2008?

8

Wie löscht man mehrere Zeilen aus Datentabelle in VB.NET 2008 ohne Schleifen?

  • Ich möchte nicht aus der Datenbank löschen.
  • Ich möchte aus der lokalen Datentabelle löschen.
  • Ich kenne die Methode 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.

    
KuldipMCA 06.05.2010, 06:55
quelle

10 Antworten

10

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.

    
Bremer 12.05.2010, 18:23
quelle
0

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:)

    
Andrew Florko 06.05.2010 19:42
quelle
0

Danke, Bremer, das ist der optimale Code zum Löschen von Zeilen in einer Datentabelle, für mich ist das die schnelle Methode:

%Vor%
    
GabrielBlumen 03.04.2017 21:25
quelle
0

Wenn Sie alle Zeilen entfernen möchten, können Sie die Methode Clear für die Datentabelle verwenden.

    
Oded 06.05.2010 06:58
quelle
0
%Vor%     
tsilb 06.05.2010 06:59
quelle
0

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.

    
Anvar 06.05.2010 22:33
quelle
0

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.

    
Thomas 14.05.2010 06:11
quelle
0

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.

Jalpesh Vadgama 14.05.2010 09:30
quelle
0

Verwenden Sie eine SQL-Anweisung in einem ADO.NET-Befehlsobjekt. Wahrscheinlich haben die Zeilen, die Sie löschen möchten, etwas gemeinsam.

%Vor%     
Nathan Fisher 06.05.2010 22:40
quelle
0

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 forqlen / a> oder verwenden Sie eine gespeicherte Prozedur.

Übrigens, du bist eine Frage, die sehr generisch ist. Meine erste Neigung war, eine WHERE-Klausel zu empfehlen.

    
Aaron Daniels 06.05.2010 19:48
quelle

Tags und Links