Entity Framework Query utilisant Contient avec plusieurs options

Utilisation de l'infrastructure d'entité pour renvoyer une list de personnes où le prénom contient du text dans un tableau de strings.

Disons:

ssortingng[] search = new ssortingng[] { "bert", "rob" }; 

et requête

 dataContext.People.Where(w => search.Any(a => w.Forename.Contains(a))); 

Cela comstack et fonctionne MAIS le process appelle réellement tous les loggings de la database, puis exécute ma clause where sur datatables renvoyées. C'est logique.

Existe-t-il un moyen de réécrire la requête afin que la clause where soit générée dans SQL?

Je suppose que dataContext.People est un IQueryable du DbSet et qu'il n'y a aucune instruction de matérialisation impliquée telle que ToList() ou AsEnumerable() .

la réponse est ici: http://www.albahari.com/nutshell/predicatebuilder.aspx

dans ton cas:

 var predicate = PredicateBuilder.False<People>(); foreach (ssortingng keyword in keywords) { ssortingng temp = keyword; predicate = predicate.Or (p => p.Forename.Contains (temp)); } dataContext.People.Where (predicate); 

Une façon de faire est d'utiliser SqlQuery et d'effectuer une requête SQL réelle.

 dataContext.Database.SqlQuery<People>("SELECT Forename, Lastname FROM myTable WHERE Forename LIKE '%bert%' or Forename LIKE '%rob%'");