2
我需要創建一個函數來接收一個字符串列表,並返回匹配的所有項目的列表(即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東西?:
SELECT *
FROM items
WHERE items.name LIKE :pattern1
AND items.name LIKE :pattern2
...
AND items.name LIKE :patternN
問題的另一部分呢?包含處理變音符號,還是有一種方法? – Tordek 2012-08-06 08:54:58
@Tordek你可以用'StringComparer.CurrentCultureIgnoreCase'指定一個不區分大小寫的匹配項,但我不知道變音符號。說實話,我不希望他們可以很容易地處理,你可能需要一個映射模式來映射(例如)*á*到* a *。 – 2012-08-10 12:04:17