SQL で like 演算子が機能するのと同じように、contains 関数を使用できるようにしたいと考えています。したがって、リストまたは「これは私の文字列です」などから .contains(%This%%%%%%is%%my%string%%) を呼び出すと、関数は true を返します。いろいろ調べてみましたが、この機能が欲しいという人は多いようです。では、これをどのように行うか、または同じ機能を持つカスタムのような関数を作成するにはどうすればよいでしょうか?
編集 迅速な対応ありがとうございます。独自のカスタム Like 関数内で正規表現を使用できました。以下は、SQL Like に似たものを使用したい他の人のためのコードです。このコードでは、ユーザーがデータベースの値を入力すると、その値のスペースが .* に置き換えられ、値の間にあるものはすべて無視されます。% を使用して SQL のスペースと値を置き換えるのと同じです。次に、検索している testValue という文字列値に対して .Like を使用して、文字列に含まれる単語などに応じて true または false を返すことができます。大文字と小文字を区別しないように ToUpper も追加しました。//C# ライク関数
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace sqllinqstuff
{
class Program
{
static void Main(string[] args)
{
string testValue = "Big RED Car";
string databaze = "big red CAR";
string databaze3 = databaze.Replace(" ", ".*");
databaze3 = databaze3.Replace(" ", ".*");
Console.WriteLine(databaze3);
Console.WriteLine(testValue.Like(databaze3));
Console.Read();
}
}
public static class CaseyStringExtension
{
public static bool Like(this string str,string value)
{
if (!string.IsNullOrEmpty(str))
{
Regex r = new Regex(value.ToUpper());
if (r.IsMatch(str.ToUpper()))
return true;
}
return false;
}
}
}
このテストの結果は true になります。