有效搜索NameValueCollection

时间:2009-08-07 22:26:01

标签: .net namevaluecollection

有没有办法从NameValueCollection中提取与特定模式/命名约定相关的键,而不必迭代集合中的每个值?

3 个答案:

答案 0 :(得分:6)

名称值集合的设计并不是特别有效。无论你使用什么方法,它都必须经过所有项目。你可以使用LINQ;类似的东西:

col.Keys.OfType<string>().Where(s => s.StartsWith("SomeString"))

答案 1 :(得分:2)

您可以将regex和linq magic组合在一起,但在所有这些的底部,您需要迭代每个值来检查它们。如果你使用linq,你将不需要编写迭代,但是它们仍然可以完成。

如果你真的需要加快速度,那么你需要了解你所采用的模式/命名约定,然后制作一个可搜索的数据结构以满足这些需求。

答案 2 :(得分:0)

两条评论:

1)你的问题太模糊了。有各种各样的数据结构,如后缀和前缀尝试,红黑树上的变体等,它们支持高效搜索。对您的问题的有用答案取决于您正在搜索的模式/命名约定的类型。发布一些样本输入和预期输出。

2)除非你确实需要,否则没有必要实现复杂的数据结构。你应该问自己的第一个问题是你是否真的需要效率:对于一个包含&lt; 50,000个项目,我真的怀疑你会看到内存,cpu或性能与一个奇特的数据结构搜索你的键的明显差异,而不是简单的线性搜索。