选择联接中所有表的所有列linq join

Select All columns for all tables in join + linq join

如何使用linq

从联接表中选择所有列

Sql:

1
2
3
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:

1
2
3
4
5
6
7
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.*  // ???
}

谢谢


虽然您不能将它们扩展为列,但是您可以简单地返回实体。例如:

1
select new { CTLJCRJOB, CTLRFDSTM }

如果需要将其展平,则必须自己写出映射,但是仍然非常琐碎。


您可以使用in子句,但不会为您变平。

1
2
3
4
5
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

另一种扭曲是

1
2
3
4
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();

您可以使用into子句,但不会为您变平。

1
2
3
4
5
6
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表列