我是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
,我希望仅基于Cotation
与CotationID
建立关联,其中Revision
是cotation
的最大值(如上所述)查询)
感谢。
卢卡斯
答案 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
}
);