49 votes

Problème avec LINQ to Entities et String.StartsWith

J'essaie de construire une page de recherche en utilisant LINQ to Entities, mais le code suivant me donne une erreur d'exécution à propos de l.t.e. qui ne reconnaît pas 'Boolean StartsWith(). Le code se compile très bien. Comment puis-je contourner ce problème autrement qu'en envoyant le filtrage StartsWith dans une procédure stockée ?

    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;

94voto

BengtBe Points 3167

Je suppose que EF ne supporte pas la surcharge de StartsWith qui prend un paramètre StringComparison.

Il devrait soutenir Commence par , Se termine par et Contient Vous pouvez donc essayer :

dp.LastName.StartsWith(searchTerm)

ou :

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

et s'assurer que searchTerm est également en minuscules.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X