2010-05-27 63 views
2

我有任务通过其字符串属性快速查找对象。 对象:通过字符串属性快速查找对象

class DicDomain 
    { 
    public virtual string Id{ get; set; } 
    public virtual string Name { get; set; } 
    } 

为了存储我的目标我使用List [T]字典,其中T是DicDomain现在。 我有5-10个这样的名单,其中包含约500-20000在每一个。 任务是通过其名称查找对象。 我现在用下面的代码:

List<T> entities = dictionary.FindAll(s => s.Name.Equals(word, StringComparison.OrdinalIgnoreCase)); 

我有一些问题:

是我的搜索速度优化。我现在想。

  1. 数据结构。它列出了这项任务的好处。怎么样散列表,排序...
  2. 方法查找。可能是我应该使用字符串实习生?

我没有太多的这些任务exp。你能否给我提高建议以提高性能。 感谢

回答

5

如果您经常执行此操作,你可以建立一个Dictionary<string, List<DicDomain>>(或Dictionary<string, DicDomain>如果Name是唯一的)建立一个反向映射(从名字一堆DicDomain对象),并保持该词典最新。

的任务将是后一个简单的哈希表查找:每天

var list = dictionary[name]; 
+0

经常100000次。谢谢你的建议!!!我无法想象这么好的方式。那么Dictionary和HashTable呢? – 2010-05-27 08:12:10

+0

@Andrew:简短的回答:'Dictionary'。长答案:http://stackoverflow.com/questions/1089132/net-hashtable-vs-dictionary-can-the-dictionary-be-as-fast/1089142#1089142 – 2010-05-27 08:12:51

+0

StringComparison.OrdinalIgnoreCase和这个怎么样。我如何实现CaseInsensetive搜索? – 2010-05-27 08:16:52