2016-02-13 2 views
1

Как я могу сделать следующее соединение в EF? Таблицы не имеют отношения друг к другу, никаких внешних ключей.Перекрестный Присоединиться к структуре Entity Lambda Выражения

Select t1.ID, t1.firstname, t2.ID,t2.name from MY_TEST_TABLE1 t1, MY_TEST_TABLE2 t2 
where t1.firstname = t2.name 
+1

Этот запрос не иметь «внешнее соединение» ... – sgeddes

ответ

3

Вы можете сделать это:

var query= from t1 in context.MY_TEST_TABLE1 
      from t2 in context.MY_TEST_TABLE2 
      where t1.firstname == t2.name 
      select new { Table1Id= t1.ID, FirstName= t1.firstname, Table2Id=t2.ID,Name= t2.name}; 

Другим способом сделать перекрестное соединение в Linq к Entities используется метод SelectMany расширения:

var query= context.MY_TEST_TABLE1.SelectMany(t1=>context.MY_TEST_TABLE2 
                 .Where(t2=>t1.firstname == t2.name) 
                 .Select(t2=>new { 
                      Table1Id= t1.ID, 
                      FirstName= t1.firstname, 
                      Table2Id=t2.ID, 
                      Name= t2.name 
                     } 
                   ) 
              ); 
1

Может быть что-то вроде этого:

var results = from t1 in dbcontext.my_test_table1s 
       join t2 in dbcontext.my_test_table2s on t1.firstname equals t2.name 
       select new 
       { 
        t1id = t1.Id, 
        firstname = t1.firstname, 
        t2id = t2.id, 
        name = t2.name 
       }; 
Смежные вопросы