如何在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
}
);