我有一张表,其中所有车辆都已注册,另一张表中我为每辆注册车辆配备了数百万个ping。LINQ从数据库中选择最后和唯一记录使用列表
我想从使用LINQ QUERY的最近30分钟内发送ping的每辆车选择最后一次ping。我已经通过“为每个”理念完成了下面的代码,但我不确定这是否是最好的方法。
我想知道是否有更好的方法来选择使用一条线?我知道我可以通过vehicle_fleetNumber“对它们进行分组”,但由于TAKE()限制了最终结果,所以我无法达到正确的结果。
var timeRestriction = DateTime.UtcNow.AddMinutes(-30);
var x = _db.Vehicles.Where(r=> r.isActive.Equals(true) && r.helperLastPing > timeRestriction);
foreach (var vehicle in x)
{
var firstOrDefault = _db.Tracks.OrderByDescending(r => r.collectedOn)
.FirstOrDefault(r => r.vehicle_fleetNumber.Equals(vehicle.fleetNumber));
}
return View();
谢谢
Hi @Tim Schmelter。 谢谢你的帮助。 如果您看到图像https://postimg.org/image/pc3agbm75/,则LINQ选择整个数据库,然后应用过滤器。这需要大约7秒钟,这是因为我目前只有63884行。使用它为每个需要1秒选择整个数据。 反正有没有为每个选择最后的ping? – Canela