1

我正在尝试func<T, bool>使用EF.Functions.Likein进行评估,但是在调用方法CSharpScript.EvaluateAsync时运行时出现错误(当前上下文中不存在名称 'EF') 。GetPredicate()

创建函数方法:

public static class Helper
{
    public static async Task<Func<T, bool>> GetPredicate<T>(string stringExpression)
            {
                ScriptOptions options = ScriptOptions.Default.AddReferences(references: typeof(T).Assembly);
                Func<T, bool> discountFilterExpression = await CSharpScript.EvaluateAsync<Func<T, bool>>(stringExpression, options);

                return discountFilterExpression;
            }
}

调用方法:

string expString = "x => EF.Functions.Like(x.CodeId, pattern) || EF.Functions.Like(x.Name, pattern) || EF.Functions.Like(x.CategoryId, pattern)";
Func<MyClass, bool> exp = await Helper.GetPredicate<MyClass>(expString);

这个怎么做?

4

1 回答 1

2

EF.Functions通常不应该被评估。

但是要回答您的具体问题,您需要添加对命名空间的程序导入()的引用,例如Microsoft.EntityFrameworkCore usingMicrosoft.EntityFrameworkCore

ScriptOptions options = ScriptOptions.Default
    .AddReferences(references: typeof(T).Assembly)
    .AddReferences(typeof(EF).Assembly) // <--
    .AddImports(typeof(EF).Namespace); // <--
于 2019-04-08T14:41:40.100 回答