2013-04-05 98 views
3

的一個或多個字符串,我發現這裏的例子:查詢包含許多字符串

var foo = things.Where(data => myList.Contains(data.Title)); 

然而,這是確切的字符串匹配。我只對它感興趣,如果data.Title.ToLower()包含在列表ToLower()中找到的任何字符串。

說清單有蘋果,預訂ClocK在裏面。

data.Title是例如:Apple Jacks,Book Club,Clockwork Book,那些都很好。但不會接受爪子和食物,點擊,應用基礎知識。

回答

4

你要尋找的每個項目的Title可能含有(不區分大小寫):

var foo = things.Where(data => myList 
       .Any(item => data.Title.ToLower().Contains(item.ToLower()))); 
+0

如果標題tolower的含有1個或多個項目的tolower,保持它,否則,丟棄。 – jmasterx 2013-04-05 13:32:19

1
var myList = new List<string> { "apple", "book", "ClocK" }; 
var things = new List<string> { "Apple Jacks", "Book Club", "Clockwork Book", "Claws and Foods", "Clicks", "Application Fundamentals" }; 
var myRegex = new Regex(string.Join("|", myList.Select(x => Regex.Escape(x))), RegexOptions.IgnoreCase); 
foreach (var matchingThing in things.Where(x => myRegex.IsMatch(x))) 
    Console.WriteLine(matchingThing); 

輸出:

Apple Jacks 
Book Club 
Clockwork Book 
+0

雖然這很酷,但我發現Gert的答案一目瞭然,更容易理解。 – jmasterx 2013-04-05 13:35:43