【发布时间】:2023-04-02 08:20:01
【问题描述】:
我正在使用 .Take() 来获得固定数量的结果。
获得TotalCountBeforeTake 的最佳方法是什么(即好像我没有使用.Take())?
我可以在不运行两次查询的情况下获得TotalCountBeforeTake 吗?
var Results = (from results in db.FindWords(term)
orderby results.word
select results.word).Take(100);
//just to get the total record count
int TotalCountBeforeTake = (from results in db.FindWords(term)
select results.word).Count();
// only showing 100 out of TotalCountBeforeTake results,
// but in order to know the TotalCountBeforeTake I had to run the query twice.
foreach (var result in Results)
{
Console.Write(result.ToString());
}
【问题讨论】:
-
做到这一点的最佳方法实际上取决于有问题的
IEnumerable。如果由数据库支持,那么执行多个查询会更快。如果是 Linq to Objects,那么编写一个 while 循环可能会更快。 -
哦,我会考虑到的,它是 db drivem
-
说到
IEnumerable<T>,请确保您从db.FindWords(term)得到的是IQueryable<T>。