为join + linq join中的所有表选择All columns

时间:2009-11-04 05:05:15

标签: linq linq-to-sql

如何使用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.*  // ???
}

由于

4 个答案:

答案 0 :(得分:38)

虽然您无法将它们扩展为列,但您只需返回实体即可。例如:

select new { CTLJCRJOB, CTLRFDSTM }

如果你需要弄平,那么你必须自己写出映射,但仍然是非常微不足道的。

答案 1 :(得分:7)

你可以使用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 

答案 2 :(得分:0)

另一种扭曲是

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

答案 3 :(得分:0)

您可以使用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的表列