查询包含许多字符串
问题描述:
的一个或多个字符串,我发现这里的例子:查询包含许多字符串
var foo = things.Where(data => myList.Contains(data.Title));
然而,这是确切的字符串匹配。我只对它感兴趣,如果data.Title.ToLower()包含在列表ToLower()中找到的任何字符串。
说清单有苹果,预订ClocK在里面。
data.Title是例如:Apple Jacks,Book Club,Clockwork Book,那些都很好。但不会接受爪子和食物,点击,应用基础知识。
答
你要寻找的每个项目的Title
可能含有(不区分大小写):
var foo = things.Where(data => myList
.Any(item => data.Title.ToLower().Contains(item.ToLower())));
答
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
如果标题tolower的含有1个或多个项目的tolower,保持它,否则,丢弃。 – jmasterx 2013-04-05 13:32:19