sql-server - 选择 'N' 行并使用 Entity Framework 获取行数

标签 sql-server entity-framework

目前我们有一个页面需要分页,因此我需要 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/

相关文章:

c# - WCF 和 Entity Framework ,隐藏列/实体属性

entity-framework - 如何告诉 EF/DbSet 附加到 SQL View 而不尝试创建同名表?

asp.net - 如何在代码优先迁移中强制删除并重新创建选定的表?

c# - 在 LINQ 查询中对基类使用扩展方法

sql - MS SQL - 从多对多表中选择数据,其中列的值与所有给定值匹配

sql-server - 如何部署具有多个主题和表目标的 kafka 接收器连接

sql - 选择查询将查看破折号左侧和右侧的数字,并根据这两个值执行选择顶部

SQL 选择或插入返回 ID

sql - 如何以数据透视格式获取 sql 查询?

entity-framework - EF4 如何在 LINQ 中将匿名类型转换为强类型