Fehler in Generic List (For Each)

21/04/2009 - 14:27 von adsoftware | Report spam
Hallo alle,

ich habe eine Generic List als Application Variable gespeichert.
Die Liste àndert sich oft. Beim Lesen der Application Variable erhalte
ich nun den Fehler:

"Die Auflistung wurde geàndert. Der Enumerationsvorgang kann
möglicherweise nicht ausgeführt werden."

Ich wollte das Problem mit Liste L2 lösen, aber hilft auch nicht. Was
kann ich tun?

Gruss
Uwe

-

'speichere Daten aus Datenbank in application variable

Public Function Schreiben(ByVal strLowID As Integer) As Boolean

Dim L2 As New List(Of Article)
Dim Articles As New List(Of Article)
Dim db As New dbDataContext
Dim article As New Article

Dim q = From c In db.Datas Where c.ID < strLowID Order By c.ID
Descending Select c.ID, c.Title Take 1500
For Each x In q
article = New Article(x.ID, x.Title)
Articles.Add(article)
next

L2 = HttpContext.Current.Application("Articles")
L2.AddRange(Articles)

HttpContext.Current.Application("Articles") = L2

Return True
End Function

-
'zeige Daten aus application variable

Public Function Lesen(ByVal strSearch As String) As String

Dim L As New List(Of Article)
L = CType(HttpContext.Current.Application("Articles"), List(Of
Article))
Dim q = From c In L Where c.Title.Contains(strSearch) Order By c.ID
Descending Select c Take 10
Dim sb As New StringBuilder

For Each X In q
dim title As String = X.Title + "<br>"
sb.Append(title)
Next

Return sb.ToString
End Function
 

Lesen sie die antworten

#1 Patrick Finger
21/04/2009 - 14:53 | Warnen spam
Hallo Uwe

Nun ja, eine Liste in einer Applikationsvariablen zu speichern ist
meiner Meinung nach eher ein ungewöhnliches Konstrukt... Ich würde eine
Liste immer neu ermitteln bevor Du sie verwendest. (Von der DB, vom
Webservice, etc)...

"Die Auflistung wurde geàndert. Der Enumerationsvorgang kann
möglicherweise nicht ausgeführt werden."


Ist völlig klar, wie sollte er auch... Du kannst auch keine Gruppe
Personen zàhlen wo stàndig wieder jemand hinzukommt oder weggeht.

Du kannst nur über eine Liste iterieren welche sich wàhrend der
Iteration nicht àndert.. Ich machs so dass ich mir die hinzuzufügenden
oder zu entfernenden Elemente wàhrend der Iteration in einer weiteren
Liste merke..
Wenn die Iteration zu Ende ist iteriere ich über die Liste der
hinzuzufügenden Elemente und füge diese hinzu.
Danach iteriere ich über die zu entfernenden Elemente und entferne diese.

End Function


kann kein VB, hoffe s hilft trotzdem.

LG

Ähnliche fragen