目前我们有一个页面需要分页,因此我需要 2 个信息
1.获取总行数
2. 获取“N”行
目前我正在使用 2 个查询来执行此操作,对于第 1 步,类似于
count = db.Transactions
.AsNoTracking()
.Where(whereClause
.Count();
然后
db.Transactions
.AsNoTracking()
.Where(whereClause
.Skip(skipRows)
.Take(pagesize)
.ToList();
有什么办法可以优化吗?
最佳答案
您可以尝试使用Local Data :
// Load all Transactions with filtering criteria into the context
db.Transactions.AsNoTracking().Where(whereClause).Load();
// Get Count
var transcationsCount = db.Transactions.Local.Count;
// Paging
var pagedTranscations = db.Transactions.Local.Skip(skipRows).Take(pageSize).ToList();
这应该只会导致在初始 Load()
调用中向数据库触发一个数据库查询。
关于sql-server - 选择 'N' 行并使用 Entity Framework 获取行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30295855/