我有一个包含CarID,ServiceType,ServiceDate,MilesLastService的表。 我想检索某个ServiceType的特定汽车的最后一条记录的ServiceDate和MilesLastService。 linq查询将如何显示。
在我的脑海中,查询看起来像这样:
Max(select ServiceDate, MilesLastService
Where (CarID = 50 && ServiceType == "TransmissionService")
我正在尝试这样的事情,但我无法弄清楚
var d2 = from m in db.Table<ServiceRecords>()
where m.CarID == carid
group m by new { m.ServiceDate, m.Milage };
有人可以帮忙吗?
答案 0 :(得分:0)
以下查询将为给定汽车的每种服务类型选择最后一条记录:
from sr in db.Table<ServiceRecords>()
where sr.CarID == id
group sr by sr.ServiceType into g
select g.OrderByDescending(sr => sr.ServiceDate).First();
如果您只想获得里程和日期,那么
from sr in db.Table<ServiceRecords>()
where sr.CarID == id
group sr by sr.ServiceType into g
let lastRecord = g.OrderByDescending(sr => sr.ServiceDate).First()
select new {
lastRecord.MilesLastService,
lastRecord.ServiceDate
}
答案 1 :(得分:0)
您可以像下面这样使用LINQ:
var d2 = (from m in db.Table<ServiceRecords>()
where m.CarID == carid && m.ServiceType == "TransmissionService"
select new {ServiceDate = m.ServiceDate, MilesLastService = m.MilesLastService})
.OrderBy(x => x.ServiceDate)
.Last();
var milesLastService = d2.MilesLastService;
var serviceDate = d2.ServiceDate;
我已使用ServiceDate
订购了检索到的列表。