web-dev-qa-db-ja.com

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

ありがとう

25
Sreedhar

それらを列に展開することはできませんが、エンティティを返すだけです。例えば:

select new { CTLJCRJOB, CTLRFDSTM }

平坦化する必要がある場合は、自分でマッピングを書き出す必要がありますが、それでも非常に簡単です。

40
leppie

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 
8
gxtaillon

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 

この方法では、CTLJCRJOB列の結果のみを取得できます。私のテストではCTLRFDSTMテーブル列はありませんでした

0
p0ny1nr1v3r

別のひねりは

OutPutList = (from CTLJCRJOB in CTRL_RUN_JOBs 
              join CTLRFDSTM in CTRL_DATA_STREAMs 
                on CTLJCRJOB.DATA_STREAM_ID equals CTLRFDSTM.DATA_STREAM_ID
              select CTLJCRJOB).ToList();
0
Ajay2707