Maison >développement back-end >C++ >Comment Dynamic LINQ peut-il simplifier la conversion de l'arbre d'expression chaîne en LINQ ?
Dans le développement de logiciels, il peut devenir nécessaire d'évaluer les expressions booléennes par rapport aux objets de données au moment de l'exécution. Une approche pour y parvenir consiste à convertir les expressions en arborescences d'expressions LINQ. Ici, nous explorons une solution optimisée pour cette tâche.
Au lieu de créer une grammaire et un analyseur complexes, nous pouvons exploiter la bibliothèque Dynamic LINQ. Cette bibliothèque fournit une méthode pratique pour compiler dynamiquement des expressions de chaîne dans des arbres d'expression.
À l'aide de Dynamic LINQ, la solution implique les étapes suivantes :
using System; using System.Linq.Expressions; using System.Linq.Dynamic; class Program { public class Person { public string Name { get; set; } public int Age { get; set; } public int Weight { get; set; } public DateTime FavouriteDay { get; set; } } static void Main() { const string exp = @"(Person.Age > 3 AND Person.Weight > 50) OR Person.Age < 3"; var p = Expression.Parameter(typeof(Person), "Person"); var e = DynamicExpression.ParseLambda(new[] { p }, null, exp); var bob = new Person { Name = "Bob", Age = 30, Weight = 213, FavouriteDay = new DateTime(2000, 1, 1) }; var result = e.Compile().DynamicInvoke(bob); Console.WriteLine(result); Console.ReadKey(); } }Conclusion
En utilisant Dynamic LINQ, nous pouvons simplifier la conversion d'expressions booléennes en arbres d'expression, en éliminant le besoin d'un analyseur personnalisé. Cette solution est à la fois efficace et flexible, ce qui en fait un choix approprié pour l'évaluation dynamique d'expressions.
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!