2011-09-30 18 views
7

Sono confuso su come modificare questa query LINQ perCome posso utilizzare per partizione in 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 

in modo da poter ottenere un singolo valore dei contenuti.

risposta

2

Non c'è modo di fare max(...) over (...) in LINQ. Ecco una query 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; 

Se si desidera solo un unico risultato:

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