4 Stimmen

LINQ: Guid in String umwandeln

Ich erhalte eine Ausnahme, wenn ich diesen Code ausführe:

var result = from menu in menuBus.GetMenus()
             orderby menu.InternalName
             select new 
             {
                 Value = menu.ID.ToString(),
                 Text = menu.InternalName
             };

var result = allMenus.ToList();

Die Fehlermeldung lautet: LINQ to Entities erkennt die Methode 'System.String ToString()' nicht, und diese Methode kann nicht in einen gespeicherten Ausdruck übersetzt werden.

Ich vermute also, dass mit Value = menu.ID.ToString() etwas schief läuft. Die Eigenschaft ID ist als GUID (UniqueIdentifier in MS SQL) definiert.

Hat jemand eine Lösung für dieses Problem?

Ich danke Ihnen vielmals!!!

7voto

George Polevoy Punkte 7073

Sie müssen die Liste nach der Abfrage der Datenbank durch eine weitere Abfrage laufen lassen.

var result = (from menu in menuBus.GetMenus()
                        orderby menu.InternalName
                        select new 
                        {
                            Value = menu.ID,
                            Text = menu.InternalName
                        }).ToList();

var result2 = (from menu in result select new {Value=menu.Value.ToString(),Text=menu.Text}).ToList();

1voto

Soviel ich weiß, kann man nicht haben .ToString() in Ihrer Linq-Abfrage, weil Linq to Entity nicht weiß, was es damit anfangen soll (weil es es nicht in eine SQL-Anweisung umwandeln kann)... Sie können den Select-Teil als

select new
{
     Value = menu.ID,
     Test = menu.InternalName
}

und dann einfach eine foreach-Schleife verwenden und die Werte in eine andere Liste kopieren, während die guid in einen String umgewandelt wird

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X