2009-11-04 23 views
20

Cómo seleccionar todas las columnas de las tablas en unirse usando LINQSeleccionar todas las columnas de todas las tablas de unirse a + LINQ unen

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.* // ??? 
} 

Gracias

Respuesta

28

Aunque no puede expandirlos a columnas, simplemente puede devolver las entidades. Por ejemplo:

select new { CTLJCRJOB, CTLRFDSTM } 

Si usted lo necesita aplanado, a continuación, usted tiene que escribir el mapeo de uno mismo, pero todavía será muy trivial.

+1

¿cuál será el tipo de devolución de un método que devuelve este tipo de resultado de la consulta? y cómo puedo contar el número de registros de los resultados de esta consulta retun – rahularyansharma

+0

@rahularyansharma: El tipo de devolución depende. En su caso, es mejor que almacene los resultados en una lista 'toList()' y luego puede usar la propiedad 'Count'. O si llama a 'Count()' en la consulta, hará un 'Select Count'. – surfasb

+0

Puede crear una clase personalizada para contener CTLJCRJob y CTLRFDSTM, por lo que no tiene que ocuparse de devolver un tipo anónimo. – ruffrey

4

Puede usar la cláusula into, pero no se aplana para usted.

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 
Cuestiones relacionadas