2009-08-17 11 views
0

Je n'arrive pas à faire fonctionner une requête Linq to Sql. Fondamentalement, je veux la somme d'une colonne dans une table pour seulement les lignes correspondant à une certaine condition. Une version simplifiée est la suivante:LINQ to SQL - Sélectionnez SUM avec un O WH

Commandes = commande qui contient des produits OrderProducts = table relationnelle contenant des produits qui sont dans un ordre produits = table contenant des informations sur les produits

Je peux obtenir la somme totale de la qté de produits comme celui-ci:

Dim totalQty = requests.Sum(Function(p) p.OrderProducts.Sum(Function(q) CType(q.ProductQty, Nullable(Of Integer)))) 

(demandes est un IQueryable de commandes)

Mais je dois aussi obtenir la somme de qté où le produit réel m Eets une certaine condition. Quelque chose comme ...

 Dim totalQty = requests.Sum(Function(p) p.OrderProducts.Sum(Function(q) CType(q.ProductQty, Nullable(Of Integer)))) 

... OÙ p.OrderProducts.Product.ProductAttribute = true

Comment puis-je obtenir cette requête avec la clause where supplémentaire pour obtenir que la somme des qtys où le produitAttribute = true ??? Merci!

Répondre

0
Dim totalQty = requests _ 
    .Sum(Function(p) p.OrderProducts _ 
     .Where(Function(q) q.Product.ProductAttribute = true) _ 
     .Sum(Function(q) CType(q.ProductQty, Nullable(Of Integer)))) 
+0

Parfait! Merci beaucoup! – Ryan