внимание на вложенное условие во втором JOIN - проблема в нем
SELECT t1.F1
FROM table1 t1
LEFT JOIN table2 t2 ON t2.SomeId = t1.SomeId
LEFT JOIN table3 t3 ON t3.MyId = t2.MyId AND t3.AnotherId = t1.AnotherId
WHERE t1.SomeOtherId = 100500;
Транслирую это вот в такой запрос в коде.
var q = from t1 in table1
join t2 in table2 on t1.SomeId equals t2.SomeId
join t3 in table3.Where(tt3 => tt3.AnotherId == t1.AnotherId) on t2.MyId equals t3.MyId
where t1.SomeOtherId == 100500
select t1.F1;
Внутри table3.Where() студия пишет, что t1 в контексте запроса нет.
Вопрос: как-то можно все-таки написать такое условие или только raw-sql?
Точно здесь Where(tt3 => tt3.AnotherId == t1.AnotherId) нужно, вроде в исходном SQL запросе идет по другому связка таблиц?
в порядке бреда, варианты а) вынести условие where t3.... = t1.. в общий where б) join by multiple columns ... что-то типа on new { t2..., t1...} equals new {t3.., t3...}
» что-то типа on new { t2..., t1...} equals new {t3.., t3...} вот такое пытаюсь намутить, на стековерфло вроде говорят, что должно взлететь, но пока не взлетает. Вынос в общий where меняет логику запроса — пробовал в первую очередь.
Обсуждают сегодня