2011-09-30 11 views
7

estoy confundido acerca de cómo cambiar esta consulta para LINQ¿Cómo puedo usar la partición en LINQ?

select 
    CONTENT 
    from 
    ( 
     select 
      CONTENT, 
      CAM_ID, 
      max(CAM_ID) over (partition by DOCUMENT_ID) MAX_ID 
     from  
      T_CAM_REVISION 
     where 
      DOCUMENT_ID = '101' 
    ) 
    where  
    CAM_ID = MAX_ID 

para que pueda obtener un único valor de contenido.

Respuesta

2

No hay forma de hacer max(...) over (...) en LINQ. Aquí es una consulta equivalente:

var maxCamID = 
    context.T_CAM_REVISION 
    .Where(rev => rev.DOCUMENT_ID == "101") 
    .Max(rev => rev.CAM_ID); 

var query = 
    from rev in context.T_CAM_REVISION 
    where rev.CAM_ID == maxCamID 
    where rev.DOCUMENT_ID == "101" 
    select rev.CONTENT; 

Si desea que sólo un único resultado:

var result = 
    context.T_CAM_REVISION 
    .First(rev => rev.CAM_ID == maxCamID 
       && rev.DOCUMENT_ID == "101") 
    .CONTENT; 
Cuestiones relacionadas