我有一些用户将通过简单的语句生成业务规则,从而导致对或错 示例:结果> 10和结果<100
我正在使用Linq.Dynamic转换这些语句,我发现ParseLambda花费的时间太长(简单的示例花费了21ms)。因此,我想将Lambda表达式保存到数据库中以供以后使用。从我的测试中,我发现对ParseLambda的调用花费的时间最多,因此我想知道是否可以序列化此Lambda表达式并在需要时坚持使用数据库将其拉出。想法是将其保存到已经解析的数据库中。
也许这都是错误的方法。我考虑过使用CodeDom和脚本,但是发现我必须为每个规则创建一个程序集,这会污染AppDomain,我可能有1000多个规则。
我愿意接受其他选择,也许那里有更好的图书馆。
ParameterExpression P = Expression.Parameter(typeof(InternalEvalData), _ParameterHeading);
LambdaExpression X = System.Linq.Dynamic.DynamicExpression.ParseLambda(new[] { P }, null, parsedExpression);
result = (bool)d.DynamicInvoke(testData);