相关疑难解决方法(0)

实体框架过滤器"Expression <Func <T,bool >>"

我正在尝试为Entity框架列表创建一个过滤器方法并更好地理解 Expression<Func<...

我有这样的测试功能.

public IQueryable<T> Filter<T>(IEnumerable<T> src, Expression<Func<T, bool>> pred)
{
    return src.AsQueryable().Where(pred);
}
Run Code Online (Sandbox Code Playgroud)

如果我这样做:

context.Table.Filter(e => e.ID < 500);
Run Code Online (Sandbox Code Playgroud)

或这个:

context.Table.Filter(e => e.SubTable.Where(et => et.ID < 500).Count() > 0 && e.ID < 500);
Run Code Online (Sandbox Code Playgroud)

一切都运作良好.

但如果我这样做:

context.Table.Filter(e => e.SubTable.Filter(et => et.ID < 500).Count() > 0 && e.ID < 500);
Run Code Online (Sandbox Code Playgroud)

或这个:

context.Table.Where(e => e.SubTable.Filter(et => et.ID < 500).Count() > 0 && e.ID < 500);
Run Code Online (Sandbox Code Playgroud)

我收到一个错误. LINQ to Entities does not recognize the method ...Filter...

为什么它适用于一个案例而不是加法器?我应该在Filter中更改它以使用相关表.我更喜欢远离其他外部库,因为我想要的是学习它是如何工作的,并且能够在将来的任何场景中使用它.

在前两种情况下,过滤器在数据库中正确运行.

c# lambda entity-framework

16
推荐指数
3
解决办法
4万
查看次数

标签 统计

c# ×1

entity-framework ×1

lambda ×1