2009-11-04 31 views
20

如何从表中选择所有列在使用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.* // ??? 
} 

感谢

回答

28

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

select new { CTLJCRJOB, CTLRFDSTM } 

如果你需要它夷为平地,那么你将不得不自己写出来的映射,但仍然会很琐碎。

+1

返回此类型查询结果的方法的返回类型是什么?以及如何计算此查询结果retun的记录数 – rahularyansharma 2012-01-16 12:42:46

+0

@rahularyansharma:返回类型取决于。就你而言,最好将结果存储到'toList()'列表中,然后你可以使用'Count'属性。或者,如果您在查询中调用Count(),它将执行一个“Select Count”。 – surfasb 2012-02-05 14:31:34

+0

您可以制作一个自定义类来保存CTLJCRJob和CTLRFDSTM,因此您不必处理返回匿名类型。 – ruffrey 2013-06-03 17:43:51

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