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

Sre*_*har 26 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
Run Code Online (Sandbox Code Playgroud)

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.*  // ???
}
Run Code Online (Sandbox Code Playgroud)

谢谢

lep*_*pie 40

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

select new { CTLJCRJOB, CTLRFDSTM }
Run Code Online (Sandbox Code Playgroud)

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

  • 返回此类查询结果的方法的返回类型是什么?以及如何计算此查询结果返回的记录数 (2认同)
  • @ruffrey:这在LINQ2SQL IIRC中不起作用. (2认同)

gxt*_*lon 8

你可以使用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 
Run Code Online (Sandbox Code Playgroud)