SQL から LINQ への変換、パート 10: Like (Bill Horst)

ここでは、これまでの「SQL から LINQ への変換」の投稿をお読みになっていることを前提としています。

 

LINQ の投稿に関する具体的なリクエストはそれほど多くなかったので、ご提案があれば今からでも歓迎します。VB LINQ で LIKE キーワード機能を模倣する方法についてのリクエストが 1 つありました。

 

SQL では、LIKE キーワードは文字列フィールドをパターンと比較し、その文字列がパターンと一致したかどうかを表すブール値を返します。たとえば、市外局番が 206 のすべての顧客を選択するには、次の SQL クエリを使用できます。

 

SQL

SELECT *

FROM CustomerTable

WHERE Phone LIKE ‘206*’

 

 

LIKE 式にはワイルドカード文字を指定できますが、システムによって異なる場合があります。上の例では、* は任意の文字列と一致するので、'206*' は 206 で始まるすべての文字列を表します。

 

VB にもたまたま Like 演算子があるので、これは簡単に変換できます。上の SQL 式の LINQ バージョンは次のようになります。

 

VB

From Contact In CustomerTable _

Where Contact.Phone Like “206*”

 

 

VB の Like キーワードには次のワイルドカードを指定できます。

          ?                  任意の 1 文字と一致

          *                 0 個以上の文字と一致

          #                 任意の 1 桁の数字と一致

          [ charlist ]     charlist に含まれる任意の 1 文字と一致

          [! charlist ]    charlist に含まれない任意の 1 文字と一致

 

Like 演算子の詳細については、こちらをご覧ください。

 

-      VB IDE テスト、Bill Horst

投稿 : 2008 年 5 月 7 日午後 4 時 54 分

VB チームの Web ログ - https://blogs.msdn.com/vbteam/archive/2008/05/07/converting-sql-to-linq-part-10-like-bill-horst.aspx (英語) より