程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> LINQ to SQL語句(9)之Top/Bottom和Paging和SqlMethods

LINQ to SQL語句(9)之Top/Bottom和Paging和SqlMethods

編輯:關於.NET

Top/Bottom操作

適用場景:適量的取出自己想要的數據,不是全部取出, 這樣性能有所加強。

Take

說明:獲取集合的前n個元素;延遲。即只 返回限定數量的結果集。

var q = (
  from e in db.Employees
  orderby e.HireDate
  select e)
   .Take(5);

語句描述:選擇所雇用的前5個雇員。

Skip

說 明:跳過集合的前n個元素;延遲。即我們跳過給定的數目返回後面的結果集。

var q = (
  from p in db.Products
  orderby p.UnitPrice descending
  select p)
  .Skip (10);

語句描述:選擇10種最貴產品之外的所有產品。

TakeWhile

說明:直到某一條件成立就停止獲取;延遲。即用其條件 去依次判斷源序列中的元素,返回符合判斷條件的元素,該判斷操作將在返回 false或源序列的末尾結束 。

SkipWhile

說明:直到某一條件成立就 停止跳過;延遲。即用其條件去判斷源序列中的元素並且跳過第一個符合判斷條 件的元素,一旦判斷返回false,接下來將不再進行判斷並返回剩下的所有元素 。

Paging(分頁)操作

適用場景:結合Skip和Take就可實現對數據分 頁操作。

1.索引var q = (
  from c in db.Customers
  orderby c.ContactName
  select c)
   .Skip(50)
  .Take(10);

語句描述:使用Skip和Take運算 符進行分頁,跳過前50條記錄,然後返回接下來10條記錄,因此提供顯示 Products表第6頁的數據。

2.按唯一鍵排序var q = (
   from p in db.Products
  where p.ProductID > 50
   orderby p.ProductID
  select p)
  .Take(10);

語 句描述:使用Where子句和Take運算符進行分頁,首先篩選得到僅50 (第5頁最後 一個ProductID)以上的ProductID,然後按ProductID排序,最後取前10個結果, 因此提供Products表第6頁的數據。請注意,此方法僅適用於按唯一鍵排序的情 況。

SqlMethods操作

在LINQ to SQL語句中,為我們提供了 SqlMethods操作,進一步為我們提供了方便,例如Like方法用於自定義通配表達 式,Equals用於相比較是否相等。

Like

自定義的通配表達式。%表示 零長度或任意長度的字符串;_表示一個字符;[]表示在某范圍區間的一個字符 ;[^]表示不在某范圍區間的一個字符。比如查詢消費者ID以“C”開 頭的消費者。

var q = from c in db.Customers
     where SqlMethods.Like(c.CustomerID, "C%")
     select c;

比如查詢消費者ID沒有“AXOXT”形式的消費者 :

var q = from c in db.Customers
    where ! SqlMethods.Like(c.CustomerID, "A_O_T")
    select c;
DateDiffDay

說明:在兩個變量之間比較。分別有:DateDiffDay、 DateDiffHour、DateDiffMillisecond、DateDiffMinute、DateDiffMonth、 DateDiffSecond、DateDiffYear 

var q = from o in db.Orders
    where SqlMethods
    .DateDiffDay (o.OrderDate, o.ShippedDate) < 10
    select o;

語句描述:查詢在創建訂單後的 10 天內已發貨的所有訂單。

已編譯查 詢操作(Compiled Query)

說明:在之前我們沒有好的方法對寫出的SQL語句進 行編輯重新查詢,現在我們可以這樣做,看下面一個例子:

//1. 創建compiled query
NorthwindDataContext db = new NorthwindDataContext();
var fn = CompiledQuery.Compile(
   (NorthwindDataContext db2, string city) =>
  from c in db2.Customers
  where c.City == city
  select c);
//2.查詢城市為London的消費者,用LonCusts集合表示,這時可以用數據控件 綁定
var LonCusts = fn(db, "London");
//3.查詢城市 為Seattle的消費者
var SeaCusts = fn(db, "Seattle");

語句描述:這個例子創建一個已編譯查詢, 然後使用它檢索輸入城市的客戶。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved