mik*_*f22 3 c# entity-framework predicatebuilder
我已经下载了谓词构建器,并且很难让它与实体框架一起工作.这是我的代码:v_OrderDetail是实体
var context = new OrdersEntities();
Expression<Func<v_OrderDetail,bool>> whereClause = w => true;
var predicate = PredicateBuilder.True<v_OrderDetail>();
predicate.And(w => w.Status == "Work");
var results = context.v_OrderDetail.AsExpandable().Where(predicate);
Run Code Online (Sandbox Code Playgroud)
当我查看结果时,我会收到每个订单.And谓词似乎没有.当我查看predicate.parameters.count时,它只显示1.我不确定,但我希望它在添加第二个后显示2.
任何帮助是极大的赞赏.
这是因为predicate.And不修改predicate,它返回一个新的Expression<Func<v_OrderDetail, bool>>.您需要将结果分配到某处以便可以使用它.
如果您执行以下操作,它将起作用:
predicate = predicate.And(w => w.Status == "Work");
Run Code Online (Sandbox Code Playgroud)
这里的问题是表达式树是不可变的.每次修改表达式树时,都必须通过创建具有所需更改的全新表达式来实现.
表达式树是不可变的,这意味着它们不能直接修改.要更改表达式树,必须创建现有表达式树的副本,并在创建副本时进行所需的更改.您可以使用ExpressionVisitor类遍历现有表达式树并复制它访问的每个节点.
| 归档时间: |
|
| 查看次数: |
1963 次 |
| 最近记录: |