Frage

Ich versuche, zu bestimmen, welche aus einer Datenbank löschen aufzeichnen kann, wenn ein Benutzer ein Formular einreicht. Die Seite hat zwei CheckBoxList ein, die die Datensätze vor der Modifikation und einem nach.

Ich kann leicht die ausgewählten Werte erhalten, die wie folgt ...

gelöscht werden müssen
//get the items not selected that were selected before
var oldSelectedItems = from oItem in oldChklSpecialNeeds.Items.Cast<ListItem>()
                       where !(from nItem in newChklSpecialNeeds.Items.Cast<ListItem>()
                               where nItem.Selected
                               select nItem.Value).Contains(oItem.Value)
                           && oItem.Selected
                       select oItem.Value;

jetzt versuche ich, so etwas zu tun, aber es ist so dass es nicht ...

var itemsToDelete = from specialNeed in db.SpecialNeeds
                           join oldSelectedItem in oldSelectedItems on specialNeed.SpecialNeedsTypeCd equals oldSelectedItem.Value
                           where specialNeed.CustomerId == customerId

Ich kann leicht benutzen Sie einfach eine foreach-Schleife und eine .DeleteOnSubmit () für jeden Punkt, aber ich denke, es eine Möglichkeit Gebrauch Funktionalität von LINQ ist und das gesamte Abfrageergebnis einer inneren passiere beitreten zu .DeleteAllOnSubmit ()

//like so
db.SpecialNeeds.DeleteAllOnSubmit(itemsToDelete); 

Irgendwelche Ideen?

War es hilfreich?

Lösung

Lokale Sammlungen können in LINQ verwendet werden, mit dem Inhalt () -Methode SQL. Sie können versuchen, die Änderung der beitreten Klausel in ein mit mit Enthält ():

var itemsToDelete = from specialNeed in db.SpecialNeeds
                    where oldSelectedItems.Contains(specialNeed.SpecialNeedsTypeCd)
                       && specialNeed.CustomerId == customerId
                    select ...;

Andere Tipps

Was ist der Fehler, den Sie bekommen? Ist es ein Typenkonflikt zwischen SpecialNeedsTypeCd und oldSelectedItem.Value? Haben Sie gerade die Auswahl in der zweiten Linq-Anweisung in diesem Beitrag verzichtet oder ist das das Problem?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top