获取 PagedList 中的记录总数

Getting the total number of records in PagedList

我在客户端使用的datagrid是基于SQL行号的;它还需要总页数来进行分页。我也在服务器上使用 PagedList。

SQL Profiler 显示 PagedList 进行了 2 次数据库调用 - 第一次获取记录总数,第二次获取当前页。问题是我找不到从 PagedList 中提取记录总数的方法。因此,目前我必须进行额外的调用才能获得总数,这会为每个请求创建 3 次调用,其中 2 次完全相同。我知道我可能无法摆脱获取总数的调用,但我讨厌调用两次。这是我的代码的摘录,我非常感谢这方面的任何帮助:

var t = from c in myDb.MyTypes.Filter<MyType>(filterXml) select c;
response.Total = t.Count(); // my first call to get the total

double d = uiRowNumber / uiRecordsPerPage;
int page = (int)Math.Ceiling(d) + 1;

var q = from c in myDb.MyTypes.Filter<MyType>(filterXml).OrderBy(someOrderString)
    select new ReturnType
    {
        Something = c.Something
    };

response.Items = q.ToPagedList(page, uiRecordsPerPage);

PagedList 有一个 .TotalItemCount 属性,它反映集合中的记录总数(不是特定页面中的记录数)。因此 response.Items.TotalItemCount 应该可以解决问题。