Подтвердить что ты не робот

Выделить все столбцы для всех таблиц в join + linq join

Как выбрать все столбцы из таблиц в соединении с помощью 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.*  // ???
}

Спасибо

4b9b3361

Ответ 1

Пока вы не можете расширить их до столбцов, вы можете просто вернуть объекты. Например:

select new { CTLJCRJOB, CTLRFDSTM }

Если вам нужно, чтобы он был сплющен, вам придется самим записать отображение, но все равно будет очень тривиальным.

Ответ 2

Вы можете использовать предложение 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 

Ответ 3

Еще один поворот

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();

Ответ 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 

таким образом мы можем получить только результат столбцов CTLJCRJOB, в моем тесте не было столбцов таблицы CTLRFDSTM