我需要创建一个接收字符串列表的函数,并返回所有匹配项的列表(即 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;
}
虽然与此类似的东西有效,但它并不理想(它似乎非常低效)。
是否可以创建一个(可能是 LINQ)查询来生成类似于以下 SQL 的内容?:
SELECT *
FROM items
WHERE items.name LIKE :pattern1
AND items.name LIKE :pattern2
...
AND items.name LIKE :patternN