2013-02-26 29 views
0

我編寫了一個C#程序,該程序包含由標題列表組成的解析數據,而該列表又包含用字符串表示的標識列表。在龐大的字符串編譯器中查找等效字符串

電子郵件:列表<標題>;頭:列表< ID>

//一個隨機ID(約100但最多2000)唯一標識索引中的一個標題。我將解析的所有ID上傳到服務器,服務器依次在索引中搜索ID,刪除相應的頭並使用它刪除的ID和不在索引中的ID寫入日誌文件。

我的下一步是解析已刪除ID的LogFile,並在我的編譯中找到等價ID並將其標題als已刪除。

Logparsing的結果是一個包含所有成功刪除的ID的數組。

,所以它看起來是這樣的:

foreach(string deletedID in deletedIDs){ 
    foreach(EMail mail in mails){ 
     foreach(Header header in mail.headers){ 
      if(header.Deleted == false){ 
      for(string iD in header) { 
       if(deletedID == iD) header.Deleted = true; 
      } 
      } 
     } 
    } 
} 

我在想,如果有辦法做到這一點(甚至更多的方法)

+4

你需要更清楚你想要什麼。也許如果你提供了一個例子。 – 2013-02-26 16:13:43

+0

羅伯特所說的。您也可以將二叉樹視爲通過ID列表進行搜索的簡單方法,如果這就是您的意思,但這並不完全清楚您要問什麼。 – Pete 2013-02-26 16:16:13

+0

有一個更快的方式來搜索 - 散列表,又名詞典。計算您想要找到的每個項目(您從文件解析的ID)作爲您的密鑰的哈希值,您的值將取決於您在做什麼 – 2013-02-26 16:17:07

回答

1

使用Dictionary持有使用你的數據更有效的方式ID作爲密鑰,EmailHeader,因爲這裏的值似乎合理。這使您的搜索幾乎是瞬間的。