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