6 votes

Entity Framework 4 recherche sur des champs combinés

Comment effectuer une recherche sur deux champs combinés. La recherche doit se faire au niveau du SQL si possible.

Disons que j'ai une table de clients avec un prénom et un nom de famille. J'aimerais que les utilisateurs puissent effectuer des recherches dans ces deux colonnes à l'aide d'un seul champ de recherche.

Ma requête se présente actuellement comme suit :

var query = DbContext.Customers
    .Where(c => c.FirstName.Contains(search) || c.LastName.Contains(search));

mais il devrait s'agir de quelque chose comme

var query = DbContext.Customers
     .Where(c => c.FullName.Contains(search));

17voto

Ladislav Mrnka Points 218632

Ce n'est possible que si vous avez FullName a également été cartographiée. Le moyen de contourner ce problème peut être String.Concat qui est autorisé dans Linq-to-entities :

var query = DbContext.Customers
                     .Where(p => String.Concat(p.FirstName, " ", p.LastName)
                                       .Contains(search));

1voto

Adrian Points 21

Vous pouvez utiliser une colonne calculée dans la base de données et la faire correspondre à la colonne par exemple.

alter table Customer add FullName AS FirstName + ' ' + LastName

(Je sais que ce n'est pas très joli)

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