我正在使用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,但问题仍未解决。
答案 0 :(得分:1)
有一个alternative to Linqkit's PredicateBuilder不使用Expression.Invoke
。这使得它更适合由SQL提供程序翻译的谓词。
如果您使用此谓词构建器,则可以使用您的代码而无需任何更改。