2010-11-22 7 views
3


Ich mache den Wechsel von Linq zu SQL zu Linq-to-Entities und in den Prozess der Konvertierung kam der Fehler "LINQ to Entities tut nicht die Methode 'System.String Format (System.String, System.Object, System.Object)' erkennen und diese Methode kann nicht in einen Store-Ausdruck übersetzt werden ". Der folgende Code ist der Schuldige. Ich verstehe, dass dies die dynamische Typgenerierung, die ich unten verwende, durchführen muss. Wie kann ich den dynamischen Typ weiterhin verwenden und L2E verwenden? Linq to Entities - NotSupportedException - dynamischer Typ - string.Format

var query = _db.Persons.Where(p => p.PersonId == PersonId); 
if (query.Count() > 0) 
{ 
    var data = query.Join(_db.Users, p => p.UserId, u => u.UserId, (p, u) => new 
    { 
     Id = p.PersonId, 
     Name = string.Format("{0} {1}", p.FirstName, p.LastName), 
     Phone = p.Phone, 
     Email = u.Email 
    }).Single(); 
    return data; 
} 

EDIT: OK, fühlen sich ein wenig dumm nach @John Hartsock mir die einfache Lösung zeigte ...
Was passiert, wenn ich etwas komplexere String-Manipulation tun wollte?

Antwort

5

Warum nicht das?

var query = _db.Persons.Where(p => p.PersonId == PersonId); 
if (query.Count() > 0) 
{ 
    var data = query.Join(_db.Users, p => p.UserId, u => u.UserId, (p, u) => new 
    { 
     Id = p.PersonId, 
     Name = p.FirstName + " " + p.LastName, 
     Phone = p.Phone, 
     Email = u.Email 
    }).Single(); 
    return data; 
} 

Hier ist eine gute Verbindung ist für Sie

http://msdn.microsoft.com/en-us/library/cc716715.aspx

+0

Herrje - wie einfach :) ... wenn ich komplexere Stringmanipulationen tun wollte, was würden Sie vorschlagen? –

+0

@ Ed.S. Ich bin froh, dass ich helfen konnte, einen Link dorthin zu stellen, der die Funktionsübersetzung von LINQ zu Entitäten nach SQL http://msdn.microsoft.com/en-us/library/cc716715.aspx zeigt –