Дано:
Таблица TABLE_1
со следующими столбцами:
ID
ColumnA
ColumnB
ColumnC
У меня есть SQL запрос , где TABLE_1
присоединяется на себя дважды основаны от ColumnA
, ColumnB
, ColumnC
. Запрос может выглядеть примерно так:
Select t1.ID, t2.ID, t3.ID
From TABLE_1 t1
Left Join TABLE_1 t2 On
t1.ColumnA = t2.ColumnA
And t1.ColumnB = t2.ColumnB
And t1.ColumnC = t2.ColumnC
Left Join TABLE_1 t3 On
t2.ColumnA = t3.ColumnA
And t2.ColumnB = t3.ColumnB
And t2.ColumnC = t3.ColumnC
... and query continues on etc.
Проблема:
Мне нужно, чтобы этот запрос был переписан в LINQ. Я пробовал нанести удар:
var query =
from t1 in myTABLE1List // List<TABLE_1>
join t2 in myTABLE1List
on t1.ColumnA equals t2.ColumnA
&& t1.ColumnB equals t2.ColumnA
// ... and at this point intellisense is making it very obvious
// I am doing something wrong :(
Как мне написать свой запрос в LINQ? Что я делаю не так?
join T2 in db.tbl2 on new { T1.firstName, T1.secondName } equals new { T2.colFirst, T2.colSecond }
. Если вы измените его на это, он скомпилируется,join T2 in db.tbl2 on new { N1 = T1.firstName, N2 = T1.secondName } equals new { N1 = T2.colFirst, N2 = T2.colSecond }
В LINQ2SQL вам редко требуется явное соединение при использовании внутренних соединений.
Если у вас есть правильные отношения внешнего ключа в вашей базе данных, вы автоматически получите отношение в конструкторе LINQ (если нет, вы можете создать отношение вручную в конструкторе, хотя у вас действительно должны быть правильные отношения в своей базе данных)
Затем вы можете просто получить доступ к связанным таблицам с "точечной нотацией"
сгенерирует запрос
На мой взгляд, это гораздо удобнее для чтения и позволяет сосредоточиться на ваших особых условиях, а не на реальной механике соединения.
Изменить
Это, конечно, применимо только тогда, когда вы хотите присоединиться к нашей модели базы данных. Если вы хотите присоединиться к «вне модели» вам необходимо обратиться к руководству включается как в ответ от Quintin Robinson
источник
Title_Authors - это поиск двух вещей, которые объединяют результаты проекта и продолжают связывание
источник
Вы также можете использовать:
источник
Я хотел бы привести еще один пример, в котором используется несколько (3) объединений.
источник
Вы также можете присоединиться, если количество столбцов в обеих таблицах не одинаковое, и можете сопоставить статическое значение столбцу таблицы.
источник
На мой взгляд, это самый простой способ объединить две таблицы с несколькими полями:
источник
Вы можете написать свой запрос вот так.
Если вы хотите сравнить свой столбец с несколькими столбцами.
источник