本文將介紹如何利用 LINQ 語法做到類似 T-SQL Like 的效果。
一般我們會利用 T-SQL 的 LIKE 來判斷特定字元是否符合指定的 pattern ,若在 LINQ 查詢中要做到類似的功能,可以利用 String.Contains、String.StartsWith 和 String.EndsWith 方法來達到類似的效果。
下列程式碼示範如何利用 String.Contains 做到類似 T-SQL 中 LIKE '%th%' 的效果:
1: var query = from p in context.Regions
2: where p.RegionDescription.Contains("th")
3: select p;
4: foreach (var item in query)
5: {
6: Console.WriteLine(string.Format("{0},{1}", item.RegionID, item.RegionDescription));
7: }
下列程式碼示範如何利用 String.StartsWith 做到類似 T-SQL 中 LIKE 'Eas%' 的效果:
1: var query1 = from p in context.Regions
2: where p.RegionDescription.StartsWith("Eas")
3: select p;
4: foreach (var item in query1)
5: {
6: Console.WriteLine(string.Format("{0},{1}", item.RegionID, item.RegionDescription));
7: }
下列程式碼示範如何利用 String.StartsWith 做到類似 T-SQL 中 LIKE '%ern' 的效果:
1: var query2 = from p in context.Regions
2: where p.RegionDescription.Trim().EndsWith("ern")
3: select p;
4: foreach (var item in query2)
5: {
6: Console.WriteLine(string.Format("{0},{1}", item.RegionID, item.RegionDescription));
7: }
實際轉成 T-SQL 如下圖所示:
【參考資料】