2014-08-28 136 views
0

我有兩個可觀察集合。
Collection1具有類型的一個,其成員是一個字符串(稱之爲文件名)
Collection2有一個類型,其成員中的一個是一個字符串(稱之爲客戶端ID)如何通過ObservableCollections映射字符串

文件名具有在其中的clientID的作爲一個子串。因此,ClientID可能是「12345」,文件名可能是「OhLookFileFor12345goshdarnit.txt」。我需要找到一種方法將這些映射在一起。第一遍簡單的實現看起來像

foreach (var V in Clients) 
     { 
      foreach (var Q in aofVM.OrganizerFiles) 
      { 
       if (Q.FileName.Contains(V.ClientID)) 
       { 
        // Match found 
       } 
      } 
     } 

顯然,這是不是真棒稍差,但有沒有更好任何其他標準的方法/快

+0

難道我們猜的語言?我的錢在C#上。 – Deduplicator 2014-08-28 19:58:34

+0

是這樣做的:-) – Rahul 2014-08-28 19:59:22

+0

有沒有辦法從'FileName'中提取'ClientID'部分?如果是的話,你可以在'O(nlogn)'中對兩個列表進行排序,以便在'O(n)'中進行比較......如果不是,數據集非常大,我想你可以創建一個全文索引'FileName's .. – Aprillion 2014-08-28 22:31:29

回答

0

如果集合是大,你會過得更好把將Collection1中的FileName值列表轉換爲後綴樹,然後對Collection2的每個成員使用查找。

有關C#中示例後綴樹實現的示例,請參見https://gist.github.com/axefrog/2373868

相關問題