gpt4 book ai didi

c# - 如何在 Linq to EF where 条件中使用 Expression>?

转载 作者:行者123 更新时间:2023-11-30 15:06:28 27 4
gpt4 key购买 nike

已经有一些关于这个主题的问题(例如 Expression.Invoke in Entity Framework? ),但是,我找不到适合我具体情况的答案。我想定义一个这样的方法:

public IQueryable<Customer> GetCustomers(Expression<Func<Customer, bool>> condition)
{
return from p in ctx.Customers.AsExpandable()
where condition.Compile()(p)
select p;
}

AsExpandable 方法来自 LinqKit(正如前面提到的线程中建议的那样)。但是,当我尝试像他那样调用我的方法时:

var customers = GetCustomers(c => c.ID == 1);

它抛出一个 InvalidCastException:

Unable to cast object of type 'System.Linq.Expressions.InstanceMethodCallExpressionN' to type 'System.Linq.Expressions.LambdaExpression'. What am I doing wrong?

最佳答案

如果要使用表达式树,需要将表达式树本身传递给LINQ方法:

return ctx.Customers.AsExpandable().Where(condition)

关于c# - 如何在 Linq to EF where 条件中使用 Expression<Func<Model, bool>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7795986/

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