【发布时间】:2016-08-23 08:47:25
【问题描述】:
我有一张所有车辆都已注册的表格,还有一张表格,其中每辆注册的车辆都有数百万次 ping。
我正在尝试使用 LINQ QUERY 从过去 30 分钟内发送 ping 的每辆车中选择最后一个 ping。我已经通过“for each”的想法完成了下面的代码,但我不确定这是否是最好的方法。
我想知道是否有更好的方法来使用单行来选择它?我知道我可以通过 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();
谢谢,
【问题讨论】:
标签: c# sql-server asp.net-mvc linq