Dashing.Engine.Dialects.SqlServerDialect.ApplySkipTake C# (CSharp) Method

ApplySkipTake() public method

public ApplySkipTake ( StringBuilder sql, StringBuilder orderClause, int take, int skip ) : void
sql StringBuilder
orderClause StringBuilder
take int
skip int
return void
        public override void ApplySkipTake(StringBuilder sql, StringBuilder orderClause, int take, int skip) {
            if (skip == 0) {
                // query starts with SELECT so insert top (X) there
                sql.Insert(6, " top (@take)");
                return;
            }

            // now we have take and skip - we'll do the recursive CTE thingy
            sql.Insert(6, " ROW_NUMBER() OVER (" + orderClause + ") as RowNum,");
            sql.Insert(0, "select * from (");

            // see MySqlDialect for explanation of the crazy number 18446744073709551615
            sql.Append(
                ") as pagetable where pagetable.RowNum between @skip + 1 and " + (take > 0 ? "@skip + @take" : "18446744073709551615")
                + " order by pagetable.RowNum");
        }