linq to sql: объединить несколько столбцов из одной таблицы - PullRequest
16 голосов
/ 06 декабря 2008

Как внутренне объединить несколько столбцов из одной и той же таблицы через Linq?

Например: У меня уже есть это ...

join c in db.table2 on table2.ID equals table1.ID

Мне нужно добавить это ...

join d in db.table2 on table2.Country equals table1.Country 

Ответы [ 5 ]

31 голосов
/ 06 декабря 2008

Это единственный способ, которым я смог заставить его работать (в c #).

var qry = from t1 in table1
          join t2 in table2
          on new {t1.ID,t1.Country} equals new {t2.ID,t2.Country}
          ...
14 голосов
/ 30 апреля 2009

Вы можете поместить свой запрос в предложение Where вместо использования оператора соединения.

Оператор соединения поддерживает несколько предложений в VB.NET, но не в C #.

В качестве альтернативы вы можете использовать стиль ANSI-82 синтаксиса SQL, например ::10000

from t1 in table1
from t2 in table1
where t1.x == t2.x
&& t1.y == t2.y
13 голосов
/ 16 июля 2009

от http://www.onedotnetway.com/linq-to-sql-join-on-multiple-conditions/

Обе эти таблицы имеют PostCode и CouncilCode в качестве общих полей. Допустим, мы хотим получить все записи из ShoppingMall, где совпадают как 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;
6 голосов
/ 18 июня 2012
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;

Это применимо для любого типа данных.

1 голос
/ 06 декабря 2008

В VB:

 dim qry = FROM t1 in table1 _
           JOIN t2 in table2 on t2.ID equals t1.ID _
           AND t2.Country equals t1.Country 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...