> And if you need to support older databases (prior to SQL Server 2005), it gets worse: [some bad SQL]
If you're stuck using a database version that first came out a decade ago, you've got bigger problems than legacy syntax for pagination.
> Not only is this complicated and messy, but it violates the DRY principle (Don't Repeat Yourself). Here's same query in LINQ. The gain in simplicity is clear: var thirdPage = query.Skip(20).Take(10);
If you're using OFFSET / LIMIT to do paging then you're doing it wrong. See here for the real way to handle paging for large result sets: http://use-the-index-luke.com/blog/2013-07/pagination-done-t...