In einer LINQ-Ausdrucksausnahme wurde ein Zyklus festgestellt

8

Ich bekomme den Fehler:

  

In einem LINQ-Ausdruck wurde ein Zyklus erkannt.

in ToList() beim Versuch, Folgendes zu tun:

%Vor%

Dies wirft jedoch keine Ausnahme und funktioniert gut:

%Vor%

(Dies ist natürlich eine vereinfachte Version).

Jeder hat eine Ahnung, warum dieses seltsame Verhalten passiert?

Bearbeiten:

Dies ist der Stack-Trace:

%Vor%

Bearbeiten2:

Beachten Sie, dass in diesem Fall IEnumerable<int> entityIds eine Liste ist, die von einer Ajax-Anfrage kommt und keine Anfrage von irgendwo.

    
Gil Stal 28.12.2011, 16:08
quelle

4 Antworten

9

Das Verhalten scheint merkwürdig, weil Sie die Schließsemantik nicht korrekt betrachten. Siehe die Kommentare unten:

%Vor%     
phoog 28.12.2011, 16:34
quelle
6

Warum weisen Sie Ihrem Parameter zu? Warum nicht

%Vor%     
Stu 28.12.2011 16:19
quelle
4

Die Antwort besteht darin, die LINQ-Abfrage nicht entityIds zuzuordnen. Siehe @ Stus Antwort für eine Lösung.

    
Pieter van Ginkel 28.12.2011 16:15
quelle
3

Natürlich gibt es einen Zyklus. Sie verwenden entityIds in der Methode Where Linq Extension und es handelt sich um die Abfrage, die selbst erstellt wird. Anstatt das eingegebene IEnumerable zu ändern, geben Sie eine neue Abfrage wie folgt zurück:

%Vor%     
Mzn 28.12.2011 16:20
quelle