C# Linq多重聚合和最大

C# Linq多重聚合和最大,c#,linq,C#,Linq,我有一张有CarID、ServiceType、ServiceDate、MilesLastService的桌子。 我想检索特定服务类型的特定汽车的最后一条记录的ServiceDate和MilesLastService。linq查询看起来如何 在我的脑海中,查询如下: Max(select ServiceDate, MilesLastService Where (CarID = 50 && ServiceType == "TransmissionService") 我尝试过这样的事

我有一张有CarID、ServiceType、ServiceDate、MilesLastService的桌子。 我想检索特定服务类型的特定汽车的最后一条记录的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 };
var d2=从m到db.Table()
其中m.CarID==CarID
新{m.ServiceDate,m.Milage}的m组;

有人能帮忙吗?

以下查询将为给定车辆的每种服务类型选择最后一条记录:

from sr in db.Table<ServiceRecords>()
where sr.CarID == id
group sr by sr.ServiceType into g
select g.OrderByDescending(sr => sr.ServiceDate).First();
来自数据库表()中的sr
其中sr.CarID==id
按sr.ServiceType将sr分组为g
选择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
}
来自数据库表()中的sr
其中sr.CarID==id
按sr.ServiceType将sr分组为g
让lastRecord=g.OrderByDescending(sr=>sr.ServiceDate)
选择新的{
lastRecord.MilesLastService,
lastRecord.ServiceDate
}

您可以使用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;
var d2=(从db.Table()中的m开始)
其中m.CarID==CarID&&m.ServiceType==“TransmissionService”
选择新{ServiceDate=m.ServiceDate,MilesLastService=m.MilesLastService})
.OrderBy(x=>x.ServiceDate)
.Last();
var milesLastService=d2.milesLastService;
var serviceDate=d2.serviceDate;
我已使用
ServiceDate
对检索到的列表进行了排序