■SQLで指定行を取得
//ROW_NUMBER 遅いときもある string sql = string.Format("SELECT x.* FROM (" + table + ") x WHERE x.rownum BETWEEN {0} AND {1} ORDER BY x.rownum", start + 1, max + start); ※table のSELECT句に ROW_NUMBER() OVER (ORDER BY <項目> DESC) AS rownum を追加しておく //SQL Server 2008以前 早い時もある string sql = "SELECT TOP " + max.ToString() + " * FROM (" + table + ") a" + " WHERE <主キー> NOT IN (SELECT TOP " + start.ToString() + " <主キー> FROM (" + table + ") b ORDER BY <主キー> DESC)" + " ORDER BY <主キー> DESC"; //SQL Server 2012以降 早い string sql = "SELECT * FROM (" + table + ") a" + " ORDER BY <項目> DESC" + " OFFSET " + start.ToString() + " ROWS" + " FETCH NEXT " + max.ToString() + " ROWS ONLY";