LINQ to Dataset: Löschen mehrerer Zeilen

31/12/2009 - 16:23 von Lorenz Buchberger | Report spam
Hallo Newsgroup,

Ich habe ein Dataset und will in diesem mehrere Datensàtze löschen, ich habe
folgenden Code:

var cust = myClients.LoggedInClients.Where(c =>
c.ClientID == sm.ID).Single();
cust.Delete();
myClients.LoggedInClients.AcceptChanges();

var subs = myClients.Subscriptions.Where(s => s.ClientID
== sm.ID);

foreach (var item in subs)
{
item.Delete();
}

myClients.AcceptChanges();

in Clients löscht er noch (ist auch nur einer), in den Subscriptions gehts
nicht mehr, weil er sagt die Aufzàhlung wàre geàndert worden. Das versteh
ich ja, aber wie macht man es richtig (und elegant ;-) )

Liebe Grüße und ein schönes neues Jahr

Lorenz
 

Lesen sie die antworten

#1 Martin Honnen
31/12/2009 - 16:56 | Warnen spam
Lorenz Buchberger wrote:

var subs = myClients.Subscriptions.Where(s =>
s.ClientID == sm.ID);

foreach (var item in subs)
{
item.Delete();
}

myClients.AcceptChanges();

in Clients löscht er noch (ist auch nur einer), in den Subscriptions
gehts nicht mehr, weil er sagt die Aufzàhlung wàre geàndert worden. Das
versteh ich ja, aber wie macht man es richtig (und elegant ;-) )



Versuche es mal mit
foreach (var item in subs.ToList())
{
item.Delete();
}
das sollte zumindest das Problem mit der foreach/Delete-Iteration lösen.

Ob LINQ to DataSet noch etwas eleganteres anbietet, bin ich nicht
sicher. In LINQ to XML z.B. gibt es eine Remove-Methode
(http://msdn.microsoft.com/en-us/lib...57554.aspx), damit man
obigen ToList()-Ansatz nicht immer ausschreiben muss. Eventuell kannst
du selbst eine Erweiterungsmethode für IEnumerable<DataRow> schreiben.




Martin Honnen MVP XML
http://msmvps.com/blogs/martin_honnen/

Ähnliche fragen