SqlFunctions.StringConvert wird funktionieren, aber ich finde es umständlich, und die meiste Zeit muss ich die Zeichenfolgenkonvertierung auf der SQL-Seite nicht wirklich durchführen.
Wenn ich Zeichenfolgenmanipulationen durchführen möchte, führe ich zuerst die Abfrage in Linq-to-Entities aus und dann die Stings in Linq-to-Objects. In diesem Beispiel möchte ich einen Datensatz erhalten, der den vollständigen Namen eines Kontakts und ContactLocationKey enthält. Hierbei handelt es sich um die Zeichenfolgenverkettung zweier ganzzahliger Spalten (ContactID und LocationID).
// perform the linq-to-entities query, query execution is triggered by ToArray()
var data =
(from c in Context.Contacts
select new {
c.ContactID,
c.FullName,
c.LocationID
}).ToArray();
// at this point, the database has been called and we are working in
// linq-to-objects where ToString() is supported
// Key2 is an extra example that wouldn't work in linq-to-entities
var data2 =
(from c in data
select new {
c.FullName,
ContactLocationKey = c.ContactID.ToString() + "." + c.LocationID.ToString(),
Key2 = string.Join(".", c.ContactID.ToString(), c.LocationID.ToString())
}).ToArray();
Nun, ich gebe zu, dass es umständlich wird, zwei anonyme Auswahlen schreiben zu müssen, aber ich würde argumentieren, dass die Bequemlichkeit, mit der Sie Zeichenfolgenfunktionen (und andere) ausführen können, die in L2E nicht unterstützt werden, aufgewogen wird. Denken Sie auch daran, dass es bei dieser Methode wahrscheinlich zu Leistungseinbußen kommt.