FindAsync返回最近的1000个结果

时间:2017-01-05 15:51:15

标签: c# asp.net-mvc entity-framework asynchronous

我正在编写一个测试来检查应用程序日志,这些日志的数量可能是每分钟数千。我想使用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行?

1 个答案:

答案 0 :(得分:5)

听起来像你在思考它。在SQL中,您需要SELECT TOP 1000ORDER BY Timestamp DESC。在这里做同样的事情:

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