文字列のリストを受け取り、一致するすべての項目のリストを返す関数を作成する必要があります(つまり、SQL "LIKE"、大文字と小文字を区別せず、発音区別符号を無視します)。
// Pseudocode example
IEnumerable<Item> Search(List<String> patterns)
{
var result = new List<Item>();
foreach (var Item in context.Items)
{
bool matches = true;
foreach (var pattern in patterns)
{
if (!Item.Name.Contains(pattern))
{
matches = false;
break;
}
}
if (matches)
{
result.Add(Item);
}
}
return result;
}
これに似たものは機能しますが、理想的とは言えません(ひどく非効率的なようです)。
次のSQLに似たものを生成する(おそらくLINQ)クエリを作成することは可能ですか?:
SELECT *
FROM items
WHERE items.name LIKE :pattern1
AND items.name LIKE :pattern2
...
AND items.name LIKE :patternN