2

Je n'arrive pas à comprendre comment écrire correctement cette requête. J'ai essayé différentes combinaisons mais rien n'a encore fonctionné.Aide sur la requête d'entité

est inférieure à la partie pertinente de mon modèle de base de données: alt text

je dois sélectionner les produits qui correspondent à une catégorie donnée et le groupe, et qui correspondent à une année donnée, la marque, le modèle, sous-modèle. Ce que j'ai fait ci-dessous:

ItemList = From P In gDataContext.Products.Include("Groups").Include("Groups.Category1").Include("LookupYearMakeModels") From G In P.Groups Where G.Category = Cat And G.Grp = Group From Y In P.LookupYearMakeModels Where Y.Year = YMM.Year And Y.Make = YMM.Make And Y.Model = YMM.Model And Y.Submodel = YMM.Submodel Select P 

maintenant je dois aussi choisir des produits qui correspondent à la catégorie et par groupe mais sont universels (Product.Univeral = True).

J'écris actuellement deux requêtes, celle ci-dessus et celle ci-dessous. Je fusionner les résultats des deux en utilisant simplement ItemList.AddRange (ItemList2)

ItemList2 = From P In gDataContext.Products.Include("Groups").Include("Groups.Category1") where P.Universal From G In P.Groups Where G.Category = Cat And G.Grp = Group Select P 

Mais je veux combiner les deux requêtes en un seul et éviter la fusion des résultats. Comment puis-je le faire?

Merci pour votre aide!

+1

Je resterais loin d'utiliser des mots de réserve comme groupe comme un nom pour un de mes objets. – JBrooks

Répondre

2

J'ai essayé de mettre en place un modèle similaire, et je crois que cela fonctionne. Ici, je sélectionne les produits qui ont un groupe correspondant à la catégorie et au groupe donnés et qui ont une année/marque/modèle/sous-modèle ou sont universels.

ItemList = From P In gDataContext.Products.Include("Groups").Include("Groups.Category1").Include("LookupYearMakeModels") 
      Where P.Groups.Any(Function(G) G.Category = Cat And G.Grp = Group) _ 
       And (_ 
         P.LookupYearMakeModels.Any(Function(Y) Y.Year = YMM.Year And Y.Make = YMM.Make And Y.Model = YMM.Model And Y.Submodel = YMM.Submodel) _ 
         Or _ 
         P.Universal = True _ 
        ) 
      Select P 

HTH

+0

A travaillé comme un charme. Merci. – mga911

+0

@ mga911, super, content que ça a marché. Est-ce que cela signifie que je reçois la prime :)? –

+0

Oui et j'ai marqué votre réponse comme la réponse acceptée. S'il ne vous crédite pas encore les points, vous les obtiendrez probablement quand la période de la prime ouverte se terminera demain. Merci encore – mga911

0

Vous pouvez utiliser IQueryable.Union Method:

ItemList = (From P In gDataContext.Products         
            .Include("Groups.Category1") 
            .Include("LookupYearMakeModels") 
      From G In P.Groups 
       Where G.Category = Cat And G.Grp = Group 
      From Y In P.LookupYearMakeModels 
       Where Y.Year = YMM.Year 
        And Y.Make = YMM.Make And Y.Model = YMM.Model 
        And Y.Submodel = YMM.Submodel 
      Select P) 
      .Union(
      From P In gDataContext.Products      
            .Include("Groups.Category1") 
      Where P.Universal 
      From G In P.Groups Where G.Category = Cat And G.Grp = Group 
      Select P) 
+0

J'apprécie la réponse, mais je cherche un moyen de faire les deux requêtes dans une requête non seulement fusionné les résultats. – mga911