Effective Using LINQ To SQL (1) - 分頁技巧
文/黃忠成
LINQ To SQL支援了Skip與Take兩個LINQ函式,這意味著我們只要結合兩者,就能做出以往不容易做出的分頁擷取資料功能。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication19
{
class Program
{
static void Main(string[] args)
{
NorthwindDataContext context = new NorthwindDataContext();
context.Log = Console.Out;
int page = 2;
var result = (from s1 in context.Customers
orderby s1.CustomerID select s1).Skip(page * 10).Take(10);
foreach (var item in result)
Console.WriteLine(item.CustomerID);
Console.ReadLine();
}
}
}
|
以上這段程式的意思是,將Customers資料表以CustomerID正向排序,然後以每頁10筆的單位,取得第20-30(也就是第三頁)的資料,下面是其執行結果及SQL Output。
SELECT [t1].[CustomerID], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactT
itle], [t1].[Address], [t1].[City], [t1].[Region], [t1].[PostalCode], [t1].[Coun
try], [t1].[Phone], [t1].[Fax], [t1].[NOTES], [t1].[TEST_ID]
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY [t0].[CustomerID]) AS [ROW_NUMBER], [t0].
[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].
[Address], [t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Country], [t0].[
Phone], [t0].[Fax], [t0].[NOTES], [t0].[TEST_ID]
FROM [dbo].[Customers] AS [t0]
) AS [t1]
WHERE [t1].[ROW_NUMBER] BETWEEN @p0 + 1 AND @p0 + @p1
ORDER BY [t1].[ROW_NUMBER]
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [20]
-- @p1: Input Int (Size = 0; Prec = 0; Scale = 0) [10]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8
EASTC
ERNSH
FAMIA
FISSA
FOLIG
FOLKO
FRANK
FRANR
FRANS
FURIB
|
LINQ To SQL善用了SQL Server 2005的ROW_NUMBER指令來完成Skip與Take的功能。
不過,說實在的,分頁其實最常用在於UI顯示的部份,尤其是ASP.NET應用程式上,而ASP.NET 3.5所提供的LINQDataSource控件已自動會處理分頁動作,所以,設計師自行處理分頁的機會變少了許多。
而Windows Form、WPF,因為沒有LINQDataSource可用,所以要處理分頁,得自己來才行,不過,這複雜度可不是僅呼叫Skip、Take就能處理了,必須自己實做類似BindingSource的控件才行。
分享到:
相关推荐
LINQ To SQL实现分页效果源码 VS2008 Frameworks3.5 LINQ To SQL 实现分页效果 数据库SQL 2005
LINQ to SQL语句(1)之Where LINQ to SQL语句(2)之Select/Distinct LINQ to SQL语句(3)之Count/Sum/Min/Max/Avg LINQ to SQL语句(4)之Join LINQ to SQL语句(5)之Order By LINQ to SQL语句(6)之Group By/Having LINQ ...
LINQ TO SQL[1] 是包含在.NET Framework 3.5 版中的一种 O/RM 组件(对象关系映射),O/RM 允许你使用 .NET 的类来对关系数据库进行建模。然后,你可以使用LINQ对数据库中的数据进行查询、更新、添加、删除。 LINQ TO ...
一个简单的linq to sql c#例子 实现数据库操作基本功能
linq基础 linq to sql linq基础 linq to sql
实现linq多个查询条件连接功能(支持linq to sql 和linq to entity)。 按多个指定属性排序功能。 不同参数的lamdba表达式条件间的转换功能。
GridView LINQ TO SQL 高效分页 一次只读处当前页的条数
Use linq for sql connection
ASP.NET MVC+LINQ TO SQL登陆
自己学linq to sql时做的demo
Linq-To-Sql-Part_2-Define-Data-Model-Class
LINQ to SQL语句(1)之Where 2 Where操作 2 1.简单形式: 2 2.关系条件形式: 2 3.First()形式: 3 LINQ to SQL语句(2)之Select/Distinct 3 1.简单用法: 4 2.匿名类型 形式: 4 3.条件形式: 5 4.指定类 型形式: 6 ...
一步一步学 Linq to sql 一步一步学 Linq to sql.doc 一步一步学 Linq to sql.doc
LINQ to SQL 学习资料 保存的网页
LINQ to SQL可视化调试工具,下载文件包括一个可视化调试工具的.dll程序集(在bin\debug文件夹下),而且还包含了源代码!算是小小的补偿吧:)
This is the final part of a three-part series on using LINQ to SQL: Part 1: Mapping Tables to Objects Part 2: Adding/Updating/Deleting Data Part 3: WPF Data Binding with LINQ to SQL These tutorials ...
Vs2008 LINQ TO SQL 实现分页功能
LINQ to SQL--YJingLee's Blog - 博客园
linq to sql实现分层与gridview使用实现增删改,适合新手做三层项目开发,快速入门
This tutorial will show you how to create a DotNetNuke module using LINQ to SQL. 这是项目源代码.初步学习LINQ有用.