我正在编写一个测试来检查应用程序日志,这些日志的数量可能是每分钟数千。我想使用FindAsync来获取最新的日志。但有时服务中断,所以使用时间值并不准确:
// 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 :(得分:5)
听起来像你在思考它。在SQL中,您需要SELECT TOP 1000
和ORDER BY Timestamp DESC
。在这里做同样的事情:
await context.Logs.OrderByDescending(x => x.Timestamp).Take(1000).ToListAsync();