我有一些来自网页的数据,我需要根据返回的内容对其进行过滤。我有预定义数量的要搜索的关键字,大约 30 个。
匹配它们的最有效方法是什么?因为我可以输入约 2000 条记录,所以我不认为通过列表/数组/开关盒搜索每条记录效率太高,对吧?
除了list/array/switch-case,我唯一能想到的就是Linq。
List<string> found = (from str in listOfStringsToSearch
where listOfKeywords.Any(keyword => str.Contains(keyword))
select str).ToList<string>();
如果您只想知道哪些搜索词具有匹配的字符串,您可以使用Enumerable.Intersect
:
var both = records.Intersect(searchTerms);
它被延迟执行,因此不会创建新集合,并且在您以某种方式(feToList
或foreach
or string.Join
)使用它之前不会执行。
它在内部使用 a Set
,因此它非常有效。
以下是有关 LINQ 中集合操作的更多信息: