ToListAsnync()是否与take()结合使用

时间:2018-10-25 00:24:10

标签: c# linq asynchronous

在下面

var formList = await _formRepository.GetList(x)
                .WhereNotHistorical()
                .OrderByDescending(f => f.dt)
                .Take(5)
                .ToListAsync();

因为它是列出异步消息,所以它不只是返回前5个正确的消息?在订购并取5之前,它仍然会等待整个结果集。我只是想确定一下。

1 个答案:

答案 0 :(得分:3)

这取决于.GetList(x).WhereNotHistorical()的工作。如果他们在查询中加入IQueryable,然后返回IQueryable<T>,则应将指令添加到SQL查询中,以便在订购后仅获得5个结果。但是,如果它们中的任何一个都接受或返回IEnumerable<T>,则之后的任何指令都将在内存中执行,因此您可以从数据库中获取整个结果集,并且过滤和排序将在数据库中完成。 -内存。