2014-08-28 134 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

相关问题