如何在LINQ中向实体表示此SQL查询?

时间:2010-10-29 17:55:57

标签: linq linq-to-entities

我是LINQ的新手,我试图在LINQ to Entities中表示以下查询:

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

- 修订密钥,

并且对于每个MasterLog,我希望仅基于CotationCotationID建立关联,其中Revisioncotation的最大值(如上所述)查询)

感谢。

卢卡斯

1 个答案:

答案 0 :(得分: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
            }

);