Heim >Backend-Entwicklung >C++ >Wie kann Dynamic LINQ die Konvertierung von String-zu-LINQ-Ausdrucksbäumen vereinfachen?
In der Softwareentwicklung kann es notwendig werden, boolesche Ausdrücke zur Laufzeit anhand von Datenobjekten auszuwerten. Ein Ansatz, dies zu erreichen, besteht darin, die Ausdrücke in LINQ-Ausdrucksbäume zu konvertieren. Hier untersuchen wir eine optimierte Lösung für diese Aufgabe.
Anstatt eine komplexe Grammatik und einen Parser zu erstellen, können wir die Dynamic LINQ-Bibliothek nutzen. Diese Bibliothek bietet eine praktische Methode zum dynamischen Kompilieren von Zeichenfolgenausdrücken in Ausdrucksbäumen.
Mit Dynamic LINQ umfasst die Lösung die folgenden Schritte:
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(); } }Fazit
Durch die Verwendung von Dynamic LINQ können wir die Konvertierung von booleschen Ausdrücken in Ausdrucksbäume vereinfachen und das eliminieren Bedarf an einem benutzerdefinierten Parser. Diese Lösung ist sowohl effizient als auch flexibel und daher eine geeignete Wahl für die Auswertung dynamischer Ausdrücke.
Das obige ist der detaillierte Inhalt vonWie kann Dynamic LINQ die Konvertierung von String-zu-LINQ-Ausdrucksbäumen vereinfachen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!