2009-11-04 17 views
20

Jak zaznaczyć wszystkie kolumny z tabel w przyłączyć za pomocą LINQZaznacz wszystkie kolumny dla wszystkich tabel w przyłączyć + LINQ przyłączyć

SQL:

select CTRL_RUN_JOB.*, CTRL_DATA_STREAM.* 
from CTRL_RUN_JOB inner join CTRL_DATA_STREAM 
     on CTRL_RUN_JOB.DATA_STREAM_ID= CTRL_DATA_STREAM.DATA_STREAM_ID 

LINQ:

from CTLJCRJOB in CTRL_RUN_JOBs 
join CTLRFDSTM in CTRL_DATA_STREAMs 
on CTLJCRJOB.DATA_STREAM_ID equals CTLRFDSTM.DATA_STREAM_ID 
select new { 
     CTLJCRJOB.* // ??? 
     ,CTLRFDSTM.* // ??? 
} 

Dzięki

Odpowiedz

28

Podczas gdy nie można rozwinąć ich do kolumn, można po prostu zwrócić elementy. Np:

select new { CTLJCRJOB, CTLRFDSTM } 

Jeśli trzeba to spłaszczona, a następnie trzeba będzie pisać mapowanie samodzielnie, ale nadal będzie bardzo trywialne.

+1

jaki będzie typ zwrotu metody, która zwróci ten typ wyniku zapytania? i jak mogę policzyć liczbę rekordów tego wyniku zapytania retun – rahularyansharma

+0

@raharmoscienceharma: zależy od typu zwracanego. W twoim przypadku najlepiej jest zapisać wyniki na liście 'toList()', a następnie możesz użyć właściwości 'Count'. Lub jeśli wywołasz 'Count()' w zapytaniu, zrobi to 'Wybierz liczbę'. – surfasb

+0

Możesz stworzyć niestandardową klasę do przechowywania CTLJCRJob i CTLRFDSTM, więc nie musisz zajmować się zwracaniem anonimowego typu. – ruffrey

4

Można użyć klauzuli "w", ale nie spowoduje to spłaszczenia.

from CTLJCRJOB in CTRL_RUN_JOBs 
join CTLRFDSTM in CTRL_DATA_STREAMs 
on CTLJCRJOB.DATA_STREAM_ID equals CTLRFDSTM.DATA_STREAM_ID into ALLCOLUMNS 
from entry in ALLCOLUMNS 
select entry 
Powiązane problemy