Я пытаюсь выбрать заказы, в которых заказано более или менее 2000 товаров, в зависимости от других значений. Мне нужно выбрать информацию из таблицы Orders, но проверить это значение в таблице OrdersProducts, в частности, сумму OrdersProducts.ProductQty. Мне также нужно сделать это с помощью построителя предикатов из-за других требований. Пока у меня есть это, но это не возвращает результаты правильно. Он использует вложенные лямбда-выражения, чего я не знал, что смог сделать, но я попробовал, и он работает, но он не возвращает правильных результатов.
Dim getOrders = From d In db.Orders _
Where d.Status = OrderStatus.Approved _
Select d
' Then a for loop adding parameters via Predicatebuilder...
If over2000 = True Then
' over 2000
predicate1 = predicate1.And(Function(d) (d.OrderProducts.Sum(Function(c) c.ProductQty > 2000)))
Else
' under 2000
predicate1 = predicate1.And(Function(d) (d.OrderProducts.Sum(Function(c) c.ProductQty < 2000)))
End If
basePredicate = basePredicate.Or(predicate1)
' End For loop
getOrders = getOrders.Where(basePredicate)
Я удалил некоторый код для краткости, но я думаю, что это понятно. Как я могу это сделать?? Спасибо!