J'ai un scénario où j'ai des noms de colonne configurés personnalisés, des opérateurs associés comme <> = entre etc., puis une valeur associée. p>
J'essaie de déterminer s'il est possible d'accumuler une requête LINQ avec une dynamique (chaîne) où la clause? P>
J'ai remarqué le prédicat.or préditcate. Et ça ne fait pas tout ce dont je parle. p>
Toute suggestion? P>
3 Réponses :
En réalité, il existe une bibliothèque spécifique de Microsoft ( La bibliothèque est incluse dans le répertoire \ linqsamples \ dynamicquery des échantillons de téléchargement ci-dessus. P>
Pour de nombreux exemples d'utilisation Vérifiez cette page: http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamique-linq-part--utilisation-Le-linq-dynamic- Query-bibliothèque.aspx P>
Ok, system.linq.dynamic semble exactement ce que je recherche à première vue. Cependant, la linq dynamique ne fonctionne que sur iquérissable et non iEnumérable. Donc, cela laisse encore un peu un problème.
@Jabezzz Ce n'est pas un problème, il ne devrait pas fonctionner que sur iquéryable code> en raison de la conception et de l'intention de
iquérirable code>. (Lire Cet article pour mieux comprendre comment Iquéririsable renvoie des données à la demande.) Il existe une méthode d'extension
ienumer
Si vous parlez d'un string em> Notez que l'exemple ci-dessous est destiné à l'utilisation de la base de données; Mais vous pouvez l'utiliser avec des objets linq-to-objets en appelant où code> clause (plutôt que de construire l'expression, etc., vous-même, alors le Bibliothèque Dynamic Linq ( Dans les 3,5 échantillons, IIRC) devrait suffire. P>
.asquerisery () code> sur vos données en mémoire. P>
Bien que Alex ait été d'abord avec la bibliothèque Dynamic Linq, la partie qui manquait a été soulevée par Marc (désolé d'avoir manqué cela). Vous avez besoin de la méthode d'extension .asQuery () pour pouvoir travailler avec vos collections.
Aussi, vous pouvez utiliser des arbres d'expression pour créer des requêtes dynamiques. Voir: P>
http://msdn.microsoft.com/en-us/library /bb397951.aspx P>
http://www.interact-sw.co .uk / iangblog / 2005/09/30 / ExpressionTrees P>
http: //blogs.msdn .com / Charlie / Archive / 2008/01/31 / Expression-Tree-Basics.aspx P>
C'est une manière plus sûre que d'utiliser Dynamiclinq, qui semble très injection-vulnérable.
Dupliquer possible de ce Stackoverflow.com/Questtions/736952/... question
"Cependant, Dynamic Linq ne fonctionne que sur iquérissable et non iénumérable" - voir la note à propos de la réponse de ma réponse ...