Die Methode 'System.String ToString ()' wird nicht erkannt und diese Methode kann nicht in einen Speicherausdruck übersetzt werden

8

Ich habe mir alle diesbezüglichen Beispiele angesehen, aber ich konnte mein Problem nicht lösen.

Ich erstelle eine Dropdownliste in asp.net mvc3.

Ich habe ein Repository, das zurückgibt:

%Vor%

Mein Ansichtsmodell sieht so aus:

%Vor%

Mein Controller für "create" Aktion für HttpGet sieht so aus:

%Vor%

und die Ansicht ist wie folgt:

%Vor%

Ich erhalte den obigen Fehler. Von dem, was ich gelesen habe, sieht es aus wie ToString () das Problem verursacht. Aber ich bin mir nicht sicher, wie ich das korrigieren soll.

Danke.

    
Tripping 20.08.2012, 21:06
quelle

1 Antwort

21

LINQ to SQL kann den .ToString() -Aufruf nicht in einen SQL-Ausdruck übersetzen.

Also ersetzen:

%Vor%

mit:

%Vor%

Beachten Sie den Aufruf von .ToList() , um die SQL-Abfrage nach dem Erstellen des Ausdrucks bis zur OrderBy -Klausel und danach die .ToString() auf dem Client (LINQ to Objects statt LINQ to Entities) mit dem% co_de-Objekt auszuführen % Ausdruck wird perfekt unterstützt.

Also im Grunde erstellen wir eine SQL-Abfrage bis zur OrderBy-Klausel (einschließlich) und rufen dann .ToList auf, um diese Abfrage eifrig auszuführen und die Ergebnismenge auf dem Client abzurufen. Dann ketten wir weiter mit einer .Select-Anweisung. Aber wir machen keine LINQ mehr zu Entitäten oder SQL. Wir machen jetzt LINQ zu Objects, weil das Ergebnisset jetzt im Speicher ist. Und .ToString in LINQ to Objects stellt keine Herausforderung dar.

Eine weitere Möglichkeit besteht darin, die integrierte Funktion .ToString() zu verwenden, die weiß, wie sie in SQL übersetzt wird. Auf diese Weise halten Sie es faul:

%Vor%     
Darin Dimitrov 20.08.2012, 21:11
quelle