Llinq查询 Skip,Take生成的sql语句

        static void Main()
        {
            DBDataContext ctx = new DBDataContext();
            var q = (from t in ctx.Teacher select t).Skip(2).Take(4);
            foreach (var item in q)
            {
                Console.WriteLine("ID={0},Name={1}", item.ID, item.Name);
            }
            Console.WriteLine("Done");
            Console.ReadKey();
        }

用sql profiler 监视运行的sql语句如下:

exec sp_executesql N'SELECT [t1].[ID], [t1].[Name], [t1].[Pwd], [t1].[Birthday]
FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY [t0].[ID], [t0].[Name], [t0].[Pwd], [t0].[Birthday]) AS [ROW_NUMBER], [t0].[ID], [t0].[Name], [t0].[Pwd], [t0].[Birthday]
    FROM [dbo].[T_Teacher] AS [t0]
    ) AS [t1]
WHERE [t1].[ROW_NUMBER] BETWEEN @p0 + 1 AND @p0 + @p1
ORDER BY [t1].[ROW_NUMBER]',N'@p0 int,@p1 int',@p0=2,@p1=4

posted @ 2010-10-13 15:01  庚武  Views(1244)  Comments(0Edit  收藏  举报