Problem mit LINQ to Entities und String.StartsWith

.net entity-framework linq linq-to-entities

Frage

Ich versuche, eine Suchseite mithilfe von LINQ to Entities zu erstellen, aber der folgende Code gibt mir einen Laufzeitfehler, da ich nicht 'Boolean StartsWith ()' erkannt habe. Der Code wird gut kompiliert. Wie kann ich das besser umgehen, als den StartsWith herauszufiltern, der zu einer gespeicherten Prozedur herausgefiltert wird?

    return from dp in dents.DirectoryPersonEntrySet
           where
               ((dp.LastName.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) ||
                (dp.Department.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) ||
                dp.Extension.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase))
           select dp;

Akzeptierte Antwort

Ich würde vermuten, dass EF die Überladung von StartsWith, die einen StringComparison-Parameter benötigt, nicht unterstützt.

Es sollte StartsWith , EndsWith und Contains unterstützen. Vielleicht können Sie also Folgendes versuchen:

dp.LastName.StartsWith(searchTerm)

oder:

dp.LastName.ToLower().StartsWith(searchTerm)

searchTerm dann sicher, dass searchTerm auch Kleinbuchstaben ist.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum