LINQ гуру, я ищу помощь, чтобы написать запрос ...
У меня есть таблица с записями Person, и в ней есть столбец ParentID, допускающий значение NULL, так что это своего рода ссылка на себя, где каждая запись может иметь Parent.
Я ищу необработанные строки, родительские строки которых были обработаны.
Этот SQL отлично работает:
SELECT *
FROM Person
where IsProcessed = 0 and
ParentId in
(
select Id from Person
where IsProcessed = 1
)
Я пробовал несколько запросов LINQ, но они не дали результатов. Сейчас я пытаюсь:
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);
По некоторым причинам это приводит к SQL с предложением DISTINCT, и я озадачен, почему создается DISTINCT.
Мой главный вопрос - как написать LINQ для оператора SQL выше?
Заранее спасибо.