Entwickler-Ecke

C# - Die Sprache - ...query results cannot be enumerated more than once


steffen.rahn - Mi 28.04.10 09:27
Titel: ...query results cannot be enumerated more than once
Ich habe folgendes Problem im Zusammenhang mit stored procedures, LINQ und JSON.NET (James Newton Kings JSON Serialisiere)

Ich convertiere ein ISingleREsult mit AsQueryable() zu IQueryable und gebe es dann zum serialisieren weiter, was zu der im Title genannten Exception führt.

Ich bin über jeden Hinweiss dankbar!


JüTho - Mi 28.04.10 09:36

Hallo Steffen und :welcome:

Zur Sache habe ich keine Ahnung; ich bin mir aber sicher, dass Fachleute den von dir verwendeten Code sehen möchten, um mögliche Ursachen zu erkennen. Das kannst du in deinem ersten Beitrag mit dem Schere-Button nachholen. Bitte benutze dort auch unter "Bereiche" die C#-Auswahl mit dem Plus-Button.

Gruß Jürgen


steffen.rahn - Mi 28.04.10 09:48

Hallo und Danke für das Willkommen.

Da es sich in erster Linie um ein Type-Problem handelt, denke ich nicht, das Code wirklich weiterhilft. Den Serialisierer möchte ich ungern verändern, da es 3rd Party ist.

Aber dennoch hier sind ein paar Zeilen:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
public IQueryable<MyObject>FindAll(int id)
{
    return db.usp_myprocedure(id).AsQueryable();
}

...

IQueryable<object>qResult = FindAll(id);
var result = new { total = qResult.ToList().Count(), data = qResult };


Anschließend soll result serialisiert werden mit dem erwähnten JSON Serialisierer

EDIT:

konnte es selber lösen. ToList() funktioniert, ich hatte es nur zweimal aufgerufen ;)