Génération dynamique de requêtes LINQ sans recompilation
Dans les scénarios où les paramètres de requête proviennent de données externes mises à jour dynamiquement, il est nécessaire de générer des requêtes LINQ sans recompiler le code source. Considérons un objet comme SomeObject avec de nombreuses propriétés.
Est-il possible de créer de nouvelles requêtes LINQ de manière dynamique en extrayant des critères d'une structure XML stockée dans une base de données ?
Par exemple :
var result = from i in someObj where //XML requests Name = 'Bob'...so append this where clause name = 'Bob'
Solution utilisant Arbres d'expression
L'emploi d'arbres d'expression offre une solution viable solution :
var param = Expression.Parameter(typeof(SomeObject), "p"); var exp = Expression.Lambda<Func<SomeObject, bool>>( Expression.Equal( Expression.Property(param, "Name"), Expression.Constant("Bob") ), param ); var query = someObj.Where(exp);
Bien que cette approche soit considérablement plus complexe, elle offre une solution dans des scénarios spécifiques où la génération de requêtes dynamiques est nécessaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!