在子集合的预测中使用PredicateBuilder

时间:2015-02-07 20:00:09

标签: vb.net linq entity-framework predicatebuilder

我正在使用PredicateBuilder(来自LinqKit)。

这是我的代码:

Dim mylist as IQueryable(of MyObj1)
Dim pred1 = PredicateBuilder.True(Of Myobj1)()
Dim pred2 = PredicateBuilder.True(Of ch1)()
Dim pred3 = PredicateBuilder.True(Of ch2)()
pred1=pred1.And(Function(t) t.id=5)
pred2=pred2.And(Function(t1) t1.vl1>=7)
pred3=pred3.And(Function(t2) t2.quantity<=4)
mylist = (From t In context.Myobj1s.Where(pred1)Select New With { _
     .Parent = t, _
    .child1 = t.ch1s.AsQueryable.Where(pred2), _
.child2 = t.ch2s.Asqueryable.Where(pred3) _
 }).ToList

但是我收到了这个错误:

The LINQ expression node type 'Invoke' is not supported in LINQ to Entities.

我还尝试使用AsExpandable而不是AsQueryable,但问题仍未解决。

1 个答案:

答案 0 :(得分:1)

有一个alternative to Linqkit's PredicateBuilder不使用Expression.Invoke。这使得它更适合由SQL提供程序翻译的谓词。

如果您使用此谓词构建器,则可以使用您的代码而无需任何更改。