Lin*_*inh 4 .net c# delegates entity-framework
Where<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);
Run Code Online (Sandbox Code Playgroud)
我将参数传递给Where方法,如下所示:f => f.Id > 4.我可以传递委托方法而不是f.Id > 4吗?
Ale*_*mes 12
没有.
实体框架需要能够查看正在尝试的所有内容.
所以,如果你只是做了这样的事情:
queryable.Where(f => DelegateFunc(f));
Run Code Online (Sandbox Code Playgroud)
DelegateFunc的定义如下所示:
public bool DelegateFunc(Foo foo)
{
return foo.Id > 4;
}
Run Code Online (Sandbox Code Playgroud)
实体框架无法在委托内窥视,破解它并将其转换为SQL.
一切都没有丢失.
如果您的目标是重复使用常见的过滤器等,您可以执行以下操作:
public Expression<Func<Foo, bool>> DelegateExpression{
get{
Expression<Func<Foo,bool>> expr = f => f.Id > 4;
return expr;
}
}
queryable.Where(DelegateExpression);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2533 次 |
| 最近记录: |