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

LINQ to SQL 實戰:IN 與 LIKE 操作完整指南(Contains、StartsWith、SqlMethods.Like)

     編輯:關於C#

IN 操作:使用 Contains 方法

查詢客戶 ID 在指定集合內的訂單:


string[] customerID_Set = { "AROUT", "BOLID", "FISSA" };
var q = (from o in db.Orders
         where customerID_Set.Contains(o.CustomerID)
         select o).ToList();

生成 SQL:


WHERE [t0].[CustomerID] IN (@p0, @p1, @p2)
-- @p0: 'AROUT', @p1: 'BOLID', @p2: 'FISSA'

也可內建陣列:


where (new string[] { "AROUT", "BOLID", "FISSA" }).Contains(o.CustomerID)

NOT IN:加邏輯非 ! 即可:


where !(new string[] { "AROUT", "BOLID", "FISSA" }).Contains(o.CustomerID)

LIKE 操作:Contains、StartsWith、EndsWith

對應 SQL LIKE 的三種基本模式:

SQLLINQ 方法範例
WHERE id LIKE '%AD%'Contains("AD")包含 "AD"
WHERE id LIKE '%AD'EndsWith("AD")以 "AD" 結尾
WHERE id LIKE 'AD%'StartsWith("AD")以 "AD" 開頭

實例:包含 "ROUT" 的客戶


var q = (from c in db.Customers
         where c.CustomerID.Contains("ROUT")
         select c).ToList();

生成 SQL:WHERE [t0].[CustomerID] LIKE @p0 -- @p0: '%ROUT%'

實例:以 "ISSA" 結尾


where c.CustomerID.EndsWith("ISSA") -- LIKE '%ISSA'

實例:以 "ARO" 開頭


where c.CustomerID.StartsWith("ARO") -- LIKE 'ARO%'

進階 LIKE:SqlMethods.Like 支援任意通配符位置

需引用 System.Data.Linq.SqlClient。可自訂通配符模式:


where SqlMethods.Like(c.CustomerID, "%ROUT%")   // 等同 Contains
where SqlMethods.Like(c.CustomerID, "%ISSA")    // 等同 EndsWith
where SqlMethods.Like(c.CustomerID, "ARO%")     // 等同 StartsWith
where SqlMethods.Like(c.CustomerID, "A%O%T")    // 開頭 A、中間有 O、結尾 T
where SqlMethods.Like(c.CustomerID, "A_O_T")    // _ 代表單一字元

支援 SQL Server 四種通配符:

  • %:零或多個字元
  • _:單一字元
  • [範圍]:如 [a-f]、[abcdef]
  • [^範圍]:排除範圍內字元

NOT LIKE


where !SqlMethods.Like(c.CustomerID, "A_O_T")

Escape Character

若欄位值本身含通配符,可指定跳脫字元:


SqlMethods.Like(c.CustomerID, pattern, escapeChar)

對應 SQL:LIKE pattern ESCAPE escapeChar。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved