LINQ to SQL et Joindre deux tables avec OU clause
Disons que j'ai des Plans et des Documents
Dim myPlans = _context.Plans.Where(predicate1)
Dim myDocuments = _context.Documents.Where(predicate2)
J'ai structuré la clause where pour chaque utilisation PredicateBuilder. Donc, myPlans et documents ont une bonne instruction SQL.
Ce que je voudrais faire est de rejoindre ces deux tables dans une linq déclaration. Le problème que je vais avoir, c'est que, par défaut, ET la condition est de rejoindre les clauses where.
myPlans clause where : (p.nom like "%test%" ET p.nom like "%lit%") OU (p.description like "%test%" ET p.description like "%lit%")
myDocuments clause where : d.nom like "%test%" ET d.nom like "%lit%") OU (d.description like "%test%" ET d.description like "%lit%")
Quand je combine les deux le désiré résultat clause where est:
Où d.ID = p.ID) ET
(myplans où la clause ci-dessus) OU (mydocument où la clause ci-dessus). Sens, j'aimerais que les deux clauses where dans chacune des tables "ou" au lieu de "Et".
Le résultat actuel où la clause est:
Où d.ID = p.ID) ET
(myplans où la clause ci-dessus) ET (mydocument où la clause ci-dessus). Sens, j'aimerais que les deux clauses where dans chacune des tables "ou" au lieu de "Et".
Je suis formant l'instruction de ce genre:
Dim test = From d in myDocuments _
Join p in MyPlans on d.ID Equals p.ID _
Select d.Name, p.Name
OriginalL'auteur sugarcrum | 2009-04-23
Vous devez vous connecter pour publier un commentaire.
Afin d'atteindre le résultat souhaité, vous devez faire le prédicat filtrages et se joint à simple déclaration.
OriginalL'auteur Jose Basilio
Ce qui se passe parce que vous faites un "premier passage" qui filtre les plans et les documents qui correspondent à vos prédicats, et puis joindre à ces résultats que, en fait un
AND
. Comme Basilio dit, vous devez faire votre join/filtre dans le même passage. Vous pouvez essayer quelque chose comme ceci:Ou de même:
OriginalL'auteur Lucas