如何利用 LINQ 語法做到類似 T-SQL Like 的效果

本文將介紹如何利用 LINQ 語法做到類似 T-SQL Like 的效果。

一般我們會利用 T-SQL 的 LIKE 來判斷特定字元是否符合指定的 pattern ,若在 LINQ 查詢中要做到類似的功能,可以利用 String.ContainsString.StartsWithString.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 如下圖所示:

 

image

 

【參考資料】