我有一張表,其中所有車輛都已註冊,另一張表中我爲每輛註冊車輛配備了數百萬個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