Как выполнить внутреннее объединение нескольких столбцов из одних и тех же таблиц через Linq?
Например: У меня уже есть это ...
join c in db.table2 on table2.ID equals table1.ID
Мне нужно добавить это ...
join d in db.table2 on table2.Country equals table1.Country





В VB:
dim qry = FROM t1 in table1 _
JOIN t2 in table2 on t2.ID equals t1.ID _
AND t2.Country equals t1.Country
Это единственный способ заставить его работать (в C#).
var qry = from t1 in table1
join t2 in table2
on new {t1.ID,t1.Country} equals new {t2.ID,t2.Country}
...
Вы можете поместить свой запрос в предложение Where вместо использования оператора соединения.
Оператор соединения поддерживает несколько предложений в VB.NET, но не в C#.
В качестве альтернативы вы можете использовать синтаксис SQL в стиле ANSI-82, например:
from t1 in table1
from t2 in table1
where t1.x == t2.x
&& t1.y == t2.y
от http://www.onedotnetway.com/linq-to-sql-join-on-multiple-conditions/
Обе эти таблицы имеют в качестве общих полей PostCode и CouncilCode. Допустим, мы хотим получить все записи из торгового центра, в которых совпадают PostCode и CouncilCode on House. Это требует от нас объединения двух столбцов. В LINQ такое соединение может быть выполнено с использованием анонимных типов. Вот пример.
var query = from s in context.ShoppingMalls
join h in context.Houses
on
new { s.CouncilCode, s.PostCode }
equals
new { h.CouncilCode, h.PostCode }
select s;
не знаю, сколько времени потребовалось в Google, чтобы найти пример соединения linq с несколькими столбцами с использованием синтаксиса запроса. Спасибо.
var query = from s in context.ShoppingMalls
join h in context.Houses
on
new {CouncilCode=s.CouncilCode, PostCode=s.PostCode }
equals
new {CouncilCode=h.District, PostCode=h.ZipCode }
select s;
Это применимо для любого типа данных.
эта логическая структура была объявлена устаревшей в sql почти 20 лет назад. (stackoverflow.com/questions/334201/…) Соответствие ему в linq не является неправильным, особенно в таких крошечных запросах, как этот, но синтаксис Пита Хааса стилистически предпочтительнее