2009-08-07 46 views

回答

6

名稱值集合的設計並非如此特別有效。無論使用什麼方法,都必須通過所有項目。你可以使用LINQ;是這樣的:

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

你也許能夠做的正則表達式和LINQ神奇的組合,但在這一切的底部,則需要每個值迭代進行檢查。如果你使用linq,你將不需要編寫迭代,但是在後面他們仍然會完成。

如果您確實需要加快速度,那麼您需要查看所使用的模式/命名約定,然後創建可搜索的數據結構以適應這些需求。

0

兩條評論:

1)您的問題太含糊。有各種各樣的數據結構,如後綴和前綴嘗試,紅黑樹上的變體等,這些都支持高效搜索。對你的問題有用的答案取決於你正在尋找的模式/命名慣例的種類。發佈一些示例輸入和預期輸出。

2)除非你真的需要它,否則沒有必要實現複雜的數據結構。你應該問自己的第一個問題是你是否真的需要效率:對於包含50000個項目的集合,我真的懷疑你會發現內存,CPU或性能的顯着差異,用一個奇特的數據結構搜索你的密鑰,而不是直截了當線性搜索。

+0

我在詢問NameValueCollection,因爲我正在專門處理NameValueCollection的ASP.NET Request.Form。 就點2)好點! – AJM 2009-08-07 22:40:05