在軟體開發中,可能有必要在運行時針對資料物件計算布林表達式。實現此目的的一種方法是將表達式轉換為 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,我們可以利用Dynamic LINQ簡化布林表達式到表達式樹的轉換,消除需要自訂解析器。此解決方案既高效又靈活,使其成為動態表達式求值的合適選擇。
以上是動態 LINQ 如何簡化字串到 LINQ 表達式樹的轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!