gpt4 book ai didi

c# - 我可以在 Entity Framework 的 Where 方法中使用自定义委托(delegate)方法吗?

转载 作者:太空狗 更新时间:2023-10-30 00:12:35 25 4
gpt4 key购买 nike

Where<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);

我将参数传递给 Where 方法,如下所示:f => f.Id > 4。我可以传递委托(delegate)方法而不是 f.Id > 4 吗?

最佳答案

没有。

Entity Framework 需要能够看到正在尝试的一切。

所以如果你只是简单地做这样的事情:

queryable.Where(f => DelegateFunc(f));

DelegateFunc 的定义如下所示:

public bool DelegateFunc(Foo foo)
{
return foo.Id > 4;
}

Entity Framework 无法窥探委托(delegate)内部,无法破解它并将其转换为 SQL。

虽然一切都没有丢失。

如果您的目标是重复使用通用过滤器等,您可以改为执行以下操作:

public Expression<Func<Foo, bool>> DelegateExpression{
get{
Expression<Func<Foo,bool>> expr = f => f.Id > 4;
return expr;
}
}

queryable.Where(DelegateExpression);

关于c# - 我可以在 Entity Framework 的 Where 方法中使用自定义委托(delegate)方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3784005/

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