首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

LINQ to SQL 集合運算與分頁完整指南(8):Concat/Union/Intersect、Take/Skip 分頁與 SqlMethods 模糊比對

     編輯:關於ASP.NET

掌握 LINQ to SQL 的集合運算子、分頁技巧與 SQL 專用方法對應。

集合運算子

Concat(聯集,不去重)

var q = (from c in db.Customers select c.Phone)
        .Concat(from c in db.Customers select c.Fax)
        .Concat(from e in db.Employees select e.HomePhone);

Union(聯集,自動去重)

var q = (from c in db.Customers select c.Country)
        .Union(from e in db.Employees select e.Country);

Intersect(交集)與 Except(差集)

語法同 Union,分別對應 SQL INTERSECT、EXCEPT。

分頁:Take + Skip


int pageSize = 10, pageIndex = 2; // 第 3 頁
var q = db.Customers
          .OrderBy(c => c.CustomerID)
          .Skip(pageSize * pageIndex)
          .Take(pageSize);

生成 SQL 使用 ROW_NUMBER() OVER (ORDER BY ...) 配合 WHERE rn BETWEEN ...,效能佳。

SqlMethods:SQL 專用功能對應

方法SQL 對應範例
LikeLIKESqlMethods.Like(c.ContactName, "A%")
DateDiffDayDATEDIFF(day, ...)SqlMethods.DateDiffDay(d1, d2)
DateDiffMonthDATEDIFF(month, ...)...
所有運算子皆為延遲執行,至實體化(ToList、foreach)時才發送 SQL。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved