2009-11-04 35 views
20

如何從表中選擇所有列在使用LINQ選擇所有列,所有表+ LINQ加入

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.* // ??? 
} 

感謝

回答

28

雖然你不能將它們擴展到列,但你可以簡單地返回實體。例如:

select new { CTLJCRJOB, CTLRFDSTM } 

如果你需要它夷爲平地,那麼你將不得不自己寫出來的映射,但仍然會很瑣碎。

+1

返回此類型查詢結果的方法的返回類型是什麼?以及如何計算此查詢結果retun的記錄數 – rahularyansharma 2012-01-16 12:42:46

+0

@rahularyansharma:返回類型取決於。就你而言,最好將結果存儲到'toList()'列表中,然後你可以使用'Count'屬性。或者,如果您在查詢中調用Count(),它將執行一個「Select Count」。 – surfasb 2012-02-05 14:31:34

+0

您可以製作一個自定義類來保存CTLJCRJob和CTLRFDSTM,因此您不必處理返回匿名類型。 – ruffrey 2013-06-03 17:43:51

4

你可以使用into子句,但它不會爲你扁平化。

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