Несколько левых соединений в запросе LINQ C # - PullRequest
0 голосов
/ 21 декабря 2011

Мне нужна помощь с запросом LINQ, который имеет несколько левых соединений.Это LINQ to EF4.Я написал SQL и преобразовал его в LINQ, не зная, что «соединение» в LINQ является внутренним соединением.Я просмотрел пример, но могу найти только примеры с одним левым соединением.Любая помощь очень ценится!

Вот SQL:

SELECT
    s.FirstName, s.LastName, s.StakeholderID, op.ParticipantID, op.SchoolID, oc.CycleNumber, 
    st.SessionTypeID, st.SessionDescription, CONVERT(varchar(10),os.SessionDt,101) AS SessionDTrr, 
    os.OSStatus, oee.EvaluatorID
FROM
    Stakeholders s LEFT JOIN ObservationParticipants op ON s.StakeholderID = op.StakeholderID
    LEFT JOIN ObservationEvaluateeEvaluators oee ON op.ParticipantID = oee.EvaluateID
    LEFT JOIN ObservationCycles oc ON oee.ObservationEvaluateeEvaluatorID = oc.ObservationEvaluateeEvaluatorID
    LEFT JOIN ObservationSessions os ON oc.ObservationCycleID = os.ObservationCycleID
    LEFT JOIN SessionTypes st ON os.SessionTypeID = st.SessionTypeID
WHERE 
    oee.EvaluatorID = evaluatorID

Вот LINQ, который я также преобразовал вышеупомянутое утверждение.Мне нужно, чтобы соединения были оставлены, хотя соединения.Кто-нибудь может помочь с преобразованием объединений в этом LINQ в оставленные объединения?

from s in Stakeholders
join op in ObservationParticipants
on s.StakeholderID equals op.StakeholderID
join oee in ObservationEvaluateeEvaluators
on op.ParticipantID equals oee.EvaluateID
join oc in ObservationCycles
on oee.ObservationEvaluateeEvaluatorID equals oc.ObservationEvaluateeEvaluatorID
join os in ObservationSessions
on oc.ObservationCycleID equals os.ObservationCycleID
join st in SessionTypes
on os.SessionTypeID equals st.SessionTypeID
where oee.EvaluatorID == evaluatorID
select new { 
            s.FirstName, s.LastName, s.StakeholderID, 
            op.ParticipantID, op.SchoolID, oc.CycleNumber,
            st.SessionTypeID, st.SessionDescription, os.SessionDt,
            os.OSStatus
            }

1 Ответ

0 голосов
/ 21 декабря 2011

похоже, что вы смешиваете технологии. linq запрашивает объекты, где как SQL запрашивает реляционную базу данных. очень разные вещи. Существуют разные реализации linq: linq to sql Язык запросов EF linq to xml Линк в NH Линк к кухонной раковине

каждый поставщик linq будет переводить запрос по-своему, и не всегда очевидно, как и где будут выполняться переводы.

в этом случае вам нужно сообщить нам о том, какого провайдера linq вы используете, оттуда мы можем помочь преобразовать запрос sql в linq2? заявление.

...