在具有子集合的投影中使用 PredicateBuilder
Using PredicateBuilder in Projections with child collections
我正在使用 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,但是问题没有解决。
有一个 alternative to Linqkit's PredicateBuilder 没有使用 Expression.Invoke
。这使得它更适合由 SQL 提供者翻译的谓词。
如果您使用这个谓词构建器,您可以使用您的代码而无需任何更改。
我正在使用 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,但是问题没有解决。
有一个 alternative to Linqkit's PredicateBuilder 没有使用 Expression.Invoke
。这使得它更适合由 SQL 提供者翻译的谓词。
如果您使用这个谓词构建器,您可以使用您的代码而无需任何更改。