gpt4 book ai didi

c# - 如何用表达式调用 SqlFunctions.PatIndex()?

转载 作者:太空宇宙 更新时间:2023-11-03 13:41:16 24 4
gpt4 key购买 nike

我有一个业务层调用,其工作方式如下:

CustomerRepository.Get(c => SqlFunctions.PatIndex("%" + arg + "%", c.FirstName));

我正在尝试使用表达式来构建它:

    public virtual IEnumerable<TEntity> Like(string LikeString, string Target)
{
MethodInfo method = typeof(SqlFunctions).GetMethod("PatIndex");
var arg1 = Expression.Constant(LikeString);
var item = Expression.Parameter(typeof(TEntity), "item");
var prop = Expression.Property(item, Target);

MethodCallExpression resultExp =
Expression.Call(method, arg1, prop);

var value = Expression.Constant(0, typeof(int?));

var greaterThan = Expression.GreaterThan(resultExp, value);

var lambda = Expression.Lambda<Func<TEntity, bool>>(greaterThan, item);

var result = Repo<TEntity>.Get().AsQueryable().Where(lambda);

return result;
}

当我调用上述方法时,出现以下异常:

此函数只能从 LINQ to Entities 调用。

关于如何克服这个问题或做我想让它做的事有什么想法吗?我的表达式代码看起来正常吗?

最佳答案

解决问题

来自:

var result = Repo<TEntity>.Get().AsQueryable().Where(lambda);

到:

var result = Repo<TEntity>.Get(lambda);

关于c# - 如何用表达式调用 SqlFunctions.PatIndex()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16898501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com