2010-10-21 7 views
3

Je connais peu d'efforts dans la construction dynamique de requêtes Linq, telles que this et this. Aucun ne semble être idéal car je voudrais éviter de mettre des expressions dans une chaîne, et omettre un où si ce n'est pas nécessaire. Mon principal souci est que la requête est optimisée pour la base de données, et omet dynamiquement des clauses inutiles chaque fois que possible.requêtes Linq dynamiques avec Entity Framework

Existe-t-il de nouveaux développements dans EF 4.0 pour de tels scénarios?

MISE À JOUR

ici est un lien que j'ai trouvé très utile: http://www.albahari.com/nutshell/predicatebuilder.aspx En effet, en ajoutant « Et » les filtres est dynamiquement trivial, et en ajoutant « ou » filtres peut être fait facilement en utilisant constructeur prédicat:

var predicate = PredicateBuilder.False<Product>(); 
predicate = predicate.Or (p => p.Description.Contains (temp)); 

et selon LINQPad sql s'émise en conséquence à ce que les filtres ont été appliqués ..

Répondre

1

pour omission de la cause de cas (pseudocode, espère bien compris votre question cor rectly):

var query = IQueryable<Foo>(); 

if(someCondition) 
    query = query.Where(......); 

var result = query.Select(.......); 

Pour les requêtes dynamiques - Je n'ai rien entendu de nouveau. À mon humble avis, nous devrons rester avec des cordes. Pouvez-vous trouver une meilleure approche?

Questions connexes