我正在尝试使用System.Linq.Dynamic库中可用的ParseLmabda方法。当我执行以下简单示例时,
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic;
using System.Linq.Expressions;
namespace DynamicLINQDemo
{
class Program
{
static void Main(string[] args)
{
ParameterExpression x = Expression.Parameter(typeof(int), "x");
ParameterExpression y = Expression.Parameter(typeof(int), "y");
LambdaExpression e = System.Linq.Dynamic.DynamicExpression.ParseLambda(new ParameterExpression[] { x, y }, null, "(x + y) * 2");
}
}
}
它引发以下异常。
System.TypeInitializationException: 'The type initializer for 'System.Linq.Dynamic.ExpressionParser' threw an exception.
知道我在做什么错吗?
答案 0 :(得分:1)
使用System.Linq.Dynamic.Core时,此方法有效:
ParameterExpression x = Expression.Parameter(typeof(int), "x");
ParameterExpression y = Expression.Parameter(typeof(int), "y");
LambdaExpression e = DynamicExpressionParser.ParseLambda(new [] { x, y }, null, "(x + y) * 2");
var c = e.Compile();
var result = c.DynamicInvoke(1, 2);
Console.WriteLine(result);