Löschen Abfrage in Linq
Ich habe diesen einfachen code, aber es zeigt Fehler. Ich weiß nicht, wohin ich gehe falsch.
Ich zeigt Fehler in der letzten Zeile.."DeleteOnSubmit"
linq_testDataContext db = new linq_testDataContext();
var remove = from aremove in db.logins
where aremove.username == userNameString && aremove.Password == pwdString
select aremove;
db.logins.DeleteOnSubmit(remove);
Du musst angemeldet sein, um einen Kommentar abzugeben.
DeleteOnSubmit
nimmt ein einzelnes Objekt. Sie übergeben eineIEnumerable<login>
zu. VerwendenDeleteAllOnSubmit
statt, oder wählen Sie ein einzelnes Objekt aus Ihr resultierende Sammlung, wie diese:remove
variable. Ich denke, es gibt kein element drin, daher wird nichts gelöscht.remove
? Was sind die Inhalte, die Sammlung zur Laufzeit?RemoveAllOnSubmit
nennen, dann führen Sie den debugger. Es hält die Ausführung des Programms auf genau diese Zeile. Jetzt können Sie bewegen Sie Ihren cursor über dieremove
variable. Sie erweitern die Struktur, und klicken Sie auf 'Ergebnisse anzeigen', sehen Sie entweder einigelogin
Objekte, oder einfach nur eine leere Auflistung.Ihnen fehlt foreach-Schleife zum löschen aller Einheit.
Verwenden, wie unten
und nach, dass
endlich
Hoffe, dies wird Ihnen helfen.
Statt:
Call
DeleteAllOnSubmit()
, wie diese:Rufen Sie
db.SubmitChanges()
danach. Könnten Sie.AsEnumerable()
als auch, entweder-oder. Wenn es ein großes delete-operation, obwohl, möchten Sie vielleicht denken über das umgehen von LINQ in diesem Fall.SubmitChanges
🙂remove.Count()
haben?DeleteAllOnSubmit()
Linie. Sie können den Befehl in das Direktfenster mit Strg+Alt+I, um es aufzurufen.remove.Count()
ist.Für gute Praktiken
versuchen mit der Methode first(), so etwas wie dieses:
verwenden Sie diesen code, seine Arbeit