2010-10-29 34 views
0

我有點新LINQ,我想代表LINQ以下查詢到的實體:如何在LINQ中將這個SQL查詢表示爲實體?

Select * from Cotations CT1 
where CT1.CotationID = iCot_ID and 
     Revision = 
      (select max(revision) 
      from Cotations CT2 
      where CT1.CotationID = CT2.Cotation) 

其中iCot_ID是外部參數,Cotations是我的實體集。

更好的是,我怎樣才能把它表示爲兩個實體之間的關聯?

如果我有以下實體:

MasterLog:

--cotationID

Cotation:

--Cotationid

--revision鍵,

併爲每個MasterLog我想哈與Cotation關聯僅基於CotationID其中Revision最大爲cotation(如上面的查詢)

謝謝。

Lukasz

回答

0

我認爲你已經過分複雜了你的查詢。下面應該這樣做。

int iCot_ID = 0; 

var query = (
    from c in context.Coalation 
    .Where(x=>x.Cotationid == iCot_ID) 
    .OrderByDesc(x=>x.Revision) 
) 
.FirstOrDefault(); 

我不太明白你的問題的後半部分。請花一些時間,並進一步解釋你想用MasterLog做什麼。

這裏有一個猜測:

var cQuery = (
      from c in context.Coalation 
        group c by g.Revision into g 
        orderby g.Revision descending 
      select g.First() 
); 

var mQuery = (
      from m in MasterLog 
      join c in cQuery 
       on m.cotationID equals c.Cotationid 
      where 
       m.Cotationid==iCot_ID 
      select new { 
       MasterLog = m, 
       Cotation = c 
      } 

); 
相關問題