我有这个查询与mysql:
select * from table1 LIMIT 10,20
Run Code Online (Sandbox Code Playgroud)
我怎么能用Microsoft sql做到这一点?
我应该使用LINQ Skip()和Take()方法进行分页,还是使用SQL查询实现自己的分页?
哪个最有效?为什么我会选择一个而不是另一个?
我正在使用SQL Server 2008,ASP.NET MVC和LINQ.
有一种简单的方法可以从任何表中获取前N行:
SELECT TOP 10 * FROM MyTable ORDER BY MyColumn
Run Code Online (Sandbox Code Playgroud)
有没有有效的方法从行N开始查询M行
例如,
Id Value
1 a
2 b
3 c
4 d
5 e
6 f
Run Code Online (Sandbox Code Playgroud)
并查询这样的
SELECT [3,2] * FROM MyTable ORDER BY MyColumn /* hypothetical syntax */
Run Code Online (Sandbox Code Playgroud)
查询从3d行开始的2行,即返回3d和第4行.
我在我的ASP.NET MVC 4.0应用程序中遇到以下错误NHibernate v4.0.0 (.Net Framework 4.0).NHibernate.Linq查询中显示此错误
Incorrect syntax near 'OFFSET'.
Invalid usage of the option FIRST in the FETCH statement.
Run Code Online (Sandbox Code Playgroud)
在这一行
Line 23: public IList<Post> Posts(int pageNo, int pageSize)
Line 24: {
Line 25: var posts = _session.Query<Post>() //here
Line 26: .Where(p => p.Published)
Line 27: .Skip(pageNo * pageSize)
Run Code Online (Sandbox Code Playgroud)
我在SO和其他网站上发现了一些类似的帖子.但是,他们建议使用SQL SERVER 2012而不是2008.是的,我的sql server版本是2008.但是,我已经使用ASP.NET MVC 5 (.Net Framework 4.5)和创建了另一个应用程序NHibernate v3.3.1,它在同一个数据库和相同的sql server版本中运行良好.
一些类似的帖子:
c# sql-server nhibernate asp.net-mvc nhibernate-configuration
sql ×3
sql-server ×3
asp.net-mvc ×2
c# ×1
linq-to-sql ×1
migration ×1
nhibernate ×1
pagination ×1
t-sql ×1