我正在进行车辆跟踪项目,我正在制作停工报告,如下所示:
很少有感兴趣的数据库字段如下:
现在我对报告的当前逻辑很差。我获取所选日期范围的所有记录,然后显示Ignition关闭且速度等于零的记录。
我认为可以优化这一点。是否有可能有一个LINQ查询,我只能获取我需要的记录。例如,在当前快照中我只想要47890和47878 id记录。
这可能吗?
修改
以下是代码:
var vehicle = db.Vehicles.Find(vehicleId);
DateTime startDate = fromDate;
DateTime endDate = toDate.AddDays(1);
var sData = db.Vehicles
.Where(v => v.VehicleId == vehicleId)
.SelectMany(v => v.GsmDeviceLogs)
.Where(gs => gs.DateTimeOfLog > startDate && gs.DateTimeOfLog < endDate && gs.Speed < zeroSpeed && !gs.IgnitionOn)
.Select(v => new
{
DateTimeOfLog = v.DateTimeOfLog,
Location = v.Location
}).OrderBy(gs => gs.DateTimeOfLog).ToList();