2016-04-10 12 views
0

Ich wähle derzeit bestimmte Zeilen aus einer Datentabelle aus, die eine DateTime-Spalte enthalten. Die Idee besteht darin, diese spezifischen Zeilen nach dem Sammeln zu löschen.Löschen bestimmter DateTime-Spaltenzeilen aus einer DataTable

EnumerableRowCollection<DateTime?> dates = 
    dataSet.Tables[0].AsEnumerable() 
    .Select(r => r.Field<DateTime?>(dateColumn)) 
    .Where((r => r < minDate || r > maxDate)); 

Ich erhalte die Zeilen in einem RowCollection, wie lösche ich tatsächlich diese Zeilen aus dem Datensatz/Datatable? Oder vielleicht ein besserer Weg, es zu tun.

+0

Warum nicht einfach die Zeilen durchlaufen und 'table.Rows.Remove (..'? –

+0

aufrufen. Ihre Anweisung _a Datentabelle, die DateTime column_ enthält, muss geklärt werden. In diesem Fall enthält Ihre Tabelle keine DateTime-Spalte? – Steve

+0

Was? Ich benötige eine Datentabelle mit einigen Spalten und die, mit der ich es zu tun habe, ist eine datetime Spalte Die Tabelle selbst hat viele Zeilen, einige Zeilen müssen gelöscht werden, abhängig vom datetime Wert eines bestimmten datetime – Vinnie418

Antwort

2

Um eine Zeile aus einer Datentabelle zu löschen, müssen einige Operationen ausgeführt werden.

Zuerst alle Zeilen finden, die Ihren Kriterien entsprechen

var rowsToDelete = dataSet.Tables[0].AsEnumerable() 
        .Where(r => r.Field<DateTime?>(dateColumn) < minDate || 
           r.Field<DateTime?>(dateColumn) > maxDate)); 

nun als gelöscht markiert jede Zeile beginnen.

foreach(DataRow row in rowsToDelete) 
    row.Delete(); 

Beachten Sie, dass die vorherige Schritt Marken nur die Zeilen als gelöscht, die Zeilen noch in der Datentabelle sind, aber sie sind nicht mehr zugänglich (und zu versuchen, eine Reihe mit seiner RowState zu verwenden == DataRowState.Deleted verursacht eine Ausnahme

)

Nun könnte man diese Zeilen aus der Datentabelle

Aufruf entfernen
dataSet.Tables[0].AcceptChanges(); 

beachten Sie auch, dass dieser Code nicht alles auf dem Datenbanktabelle nicht ändert, sondern nur macht Änderungen an die im Speicher Da TaTabelle. Wenn Sie die Zeilen aus der Datenbanktabelle entfernen möchten, benötigen Sie spezifischen ADO.NET-Code für Ihre Datenbank. Zum Beispiel müssen Sie in Sql Server die SqlDataAdapter.Update-Methode für eine Stapellöschung oder eine Sequenz von einzelnen SqlCommand mit der entsprechende DELETE-Anweisung für jede zu löschende Zeile.

+0

Süß, das hat einwandfrei funktioniert Besonders mit AcceptChanges(). – Vinnie418

Verwandte Themen