0

我有一些来自网页的数据,我需要根据返回的内容对其进行过滤。我有预定义数量的要搜索的关键字,大约 30 个。

匹配它们的最有效方法是什么?因为我可以输入约 2000 条记录,所以我不认为通过列表/数组/开关盒搜索每条记录效率太高,对吧?

4

2 回答 2

0

除了list/array/switch-case,我唯一能想到的就是Linq。

List<string> found = (from str in listOfStringsToSearch 
                     where listOfKeywords.Any(keyword => str.Contains(keyword)) 
                     select str).ToList<string>();
于 2012-07-24T10:28:20.977 回答
0

如果您只想知道哪些搜索词具有匹配的字符串,您可以使用Enumerable.Intersect

var both = records.Intersect(searchTerms);

它被延迟执行,因此不会创建新集合,并且在您以某种方式(feToListforeachor string.Join)使用它之前不会执行。

它在内部使用 a Set,因此它非常有效。

以下是有关 LINQ 中集合操作的更多信息:

http://msdn.microsoft.com/en-us/library/bb546153.aspx

于 2012-07-24T10:31:50.630 回答