0
我有一個PredicateBuilder
表達它返回一個IQueryable
像這樣(人爲的例子)內找到匹配的行的索引:C#實體框架和謂詞生成器 - 一個IQueryable /分頁文檔版本
var predicate = PredicateBuilder.True<CoolEntity>();
predicate = predicate.And(x => x.id > 0);
IQueryable<CoolEntity> results = CoolEntityRepository
.FindBy(predicate)
.OrderByDescending(x => x.id);
我然後使用此生成包含給定頁面使用MVC指數控制器CoolEntity
實體,像這樣只有結果的分頁列表:
int total = results.Count(); //Used by my controller to show the total number of results
int pageNumber = 2;
int pagesize = 20;
//Only get the entities we need for page 2, where there are 20 results per page
List<CoolEntity> resultList = results
.Skip(pageNumber * pageSize)
.Take(pageSize)
.ToList()
這個查詢確保只有相關結果退換每個頁面,因爲通過存儲庫從SQL數據庫返回了數千個記錄。它一直很好地工作。
問題是,我現在希望能夠找出我的索引中哪些分頁頁面需要返回特定實體。例如,假設我的一個CoolEntity對象的ID爲5,如果我想加載該實體將用於我的索引控制器的分頁頁面,我怎麼才能確定pageNumber
的值?
具體來說,我怎麼能找出了results
,ID爲5的實體是第651行,因此使用這個號碼,以確定pageNumber
(即Math.Ceiling(651/pagesize)
或類似的東西)?有沒有更好的方法呢?
不要認爲「ToList()」成千上萬的記錄是最佳的。 – Nirman