在软件开发中,可能有必要在运行时针对数据对象计算布尔表达式。实现此目的的一种方法是将表达式转换为 LINQ 表达式树。在这里,我们探索针对此任务的优化解决方案。
我们可以利用动态 LINQ 库,而不是构建复杂的语法和解析器。该库提供了一种便捷的方法,可以将字符串表达式动态编译为表达式树。
使用动态 LINQ,该解决方案涉及以下步骤:
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(); } }
通过利用 Dynamic LINQ,我们可以简化布尔表达式到表达式树的转换,消除需要自定义解析器。该解决方案既高效又灵活,使其成为动态表达式求值的合适选择。
以上是动态 LINQ 如何简化字符串到 LINQ 表达式树的转换?的详细内容。更多信息请关注PHP中文网其他相关文章!