如何在LINQ中将这个SQL查询表示为实体?

如何在LINQ中将这个SQL查询表示为实体?

问题描述:

我有点新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

我认为你已经过分复杂了你的查询。下面应该这样做。

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 
      } 

);