2017-01-05 137 views
1

我正在編寫一個測試來檢查應用程序日誌,該日誌的數量可能爲每分鐘數千。我想使用FindAsync來獲取最新的日誌。然而,有時也有休息的服務,讓使用時間值不準確:FindAsync返回最近的1000個結果

// may return many or none` 
context.FindAsync(x => x.Timestamp >= DateTime.Now.AddMinutes(-10)) 

我想要做的是一樣的東西:

context.FindAsync(x => OrderByDescending(x.Timestamp).Take(1000)) 

的問題是,如果FindAsync返回過多結果,它可能會放慢其他服務和線程。有沒有辦法使用FindAsync只返回最近的1000行?

+0

您可以嘗試OrderByDesc方法。 –

+0

context.OrderByDescrding(x => Timestamp).Take(1000)? –

+0

這是一個異步操作,它必須是一個OrderByDescAsync()調用才能工作。 –

回答

5

對我來說聽起來像是你在推翻它。在SQL中,你可以使用SELECT TOP 1000ORDER BY Timestamp DESC。在此處做同樣的事情:

await context.Logs.OrderByDescending(x => x.Timestamp).Take(1000).ToListAsync(); 
+0

是的,這是一個答案。但是,不,我所調用的上下文不公開OrderByDescending()。 –

+0

你是什麼意思? FindAsync來自System.Data.Entity,OrderByDescending來自System.Linq。你是不是在查詢'DbSet '?如果沒有,那麼你應該明確地說明你的'context'是什麼。 – trashr0x

相關問題