Les gourous LINQ, Je cherche aide pour écrire une requête ...LINQ aide de la requête nécessaire pour Intersection
J'ai une table avec les dossiers de personne, et il a une colonne de ParentID annulable, il est une sorte d'auto -référence, où chaque enregistrement peut avoir un parent.
Je recherche des lignes non traitées dont les lignes parent ont été traitées. Cette SQL fonctionne très bien:
SELECT *
FROM Person
where IsProcessed = 0 and
ParentId in
(
select Id from Person
where IsProcessed = 1
)
J'ai essayé un certain nombre de requêtes LINQ, mais ils ont échoué. Maintenant, je suis en train:
var qParent =
from parent in db.Person
where
parent.IsProcessed == true
select parent.ID;
var qChildren = from child in db.Person
where
child.IsProcessed == false
&& child.ParentId.HasValue
select child.ParentId.Value;
var q2 = qChildren.Intersect(qParent);
Cela donne SQL avec une clause DISTINCT, pour une raison quelconque, et je suis dérouté pourquoi DISTINCT est généré.
Ma question principale est comment écrire LINQ pour l'instruction SQL ci-dessus?
Merci d'avance.
oui, je suis d'accord qu'une jointure est le chemin à parcourir. Je l'ai tourné un peu pour le rendre plus logique à lire: var q = de l'enfant dans db.Person où child.IsProcessed rejoindre des parents dans db.Person sur child.ParentID.value égaux parents!. ID où parent.IsProcessed sélectionnez enfant; merci beaucoup, Jon –