2013-06-26 5 views
-4

У меня есть несколько таблиц:Entity Framework использовать LINQ для возврата объединения таблиц

table1: 
id1 
fk_tb2 // this is the fk to table2 

table2: 
id2 
fk_tb3 //this is the fk to table3 

table3: 
id3 
name3 

Теперь я хочу, чтобы вернуть таблицу как: id1 fk_tb2 name3

кто знает, как сделать это? Благодаря

С уважением,

+0

Прочтите это сообщение: http://stackoverflow.com/questions/10750146/linq-select-to-new-object –

ответ

6

Регистрацией таблиц и использовать анонимный тип для возврата необходимых полей:

from t1 in table1 
join t2 in table2 on t1.fk_tb2 equals t2.id2 
join t3 in table3 on t2.fk_tb3 equals t3.id3 
select new { t1.id1, t2.id2, t3.name3 } 
+0

спасибо, и каков будет тип возврата? потому что мне нужно записать его в функцию, которая возвращает это. – Leona

+0

Анонимный тип будет анонимным :) Вы не можете вернуть анонимные объекты из методов. Если вы хотите вернуть эти три значения, создайте класс 'public class Foo {public int Id1 {get; задавать; } ... 'который будет иметь три свойства Id1, Id2, Name. И вместо этого возвращаем экземпляр этого класса: 'select new Foo {Id1 = t1.id1, ​​Id2 = t2.id2, Name = t3.name3}' –

0

Если ваши Navigations хорошо очерчены, вы можете сделать что-то вроде

var m = from tb1 in dbContext.table1 
     select new { 
        id1 = tb1.id1, 
        fk_tb2 = tb1.table2.tb2, 
        name3 = tb1.table2.table3.name3 
        }; 

еще вы можете сделать

var m = from tb1 in dbContext.table1 
     join tb2 in dbContext.table2 on tb2.id2 equals tb1.fk_tb2 
     join tb3 in dbContext.table3 on tb3.id3 equals tb2.fk_tb3 
     select new { 
        id1 = tb1.id1, 
        fk_tb2 = tb2.id2, 
        name3 = tb3.name3 
        }; 
Смежные вопросы