需引用 System.Data.Linq.SqlClient 命名空間。SqlMethods.Like 可在 LINQ 查詢中直接使用 T-SQL 通配符:
var q = (from c in db.Customers
where SqlMethods.Like(c.CustomerID, "A%O%T")
select c).ToList();
轉譯 SQL:
SELECT ... FROM [dbo].[Customers] AS [t0]
WHERE [t0].[CustomerID] LIKE @p0 -- @p0 = 'A%O%T'
意義:以 A 開頭、中間含 O、以 T 結尾,其餘任意。
| 通配符 | 說明 | 範例 |
|---|---|---|
% | 零或多個任意字元 | '%computer%' 含 computer 的書名 |
_ | 單一任意字元 | '_ean' 以 ean 結尾的四字名 |
[range] | 指定範圍內單一字元 | '[C-P]arsen' 以 arsen 結尾、首字母 C-P |
[^range] | 排除範圍內單一字元 | 'de[^l]%' 以 de 開頭、第三字母非 l |
var q = (from c in db.Customers
where SqlMethods.Like(c.CustomerID, "A_O_T")
select c).ToList();
轉譯 LIKE 'A_O_T',中間各一個任意字元。
var q = (from c in db.Customers
where !SqlMethods.Like(c.CustomerID, "A_O_T")
select c).ToList();
若欄位值本身含 %、_、[],需指定 Escape 字元:
SqlMethods.Like(column, pattern, escapeChar)
轉譯為 LIKE pattern ESCAPE '\'。詳細規則參考 MSDN 文件。