通过字符串属性快速查找对象

And*_*kov 3 .net c# optimization

我有通过其字符串属性快速查找对象的任务.宾语:

  class DicDomain
  {
    public virtual string Id{ get; set; }
    public virtual string Name { get; set; }
  }
Run Code Online (Sandbox Code Playgroud)

为了存储我的对象,我使用List [T]字典,其中T现在是DicDomain.我有5-10个这样的列表,每个列表包含大约500-20000.任务是按名称查找对象.我现在使用下一个代码:

  List<T> entities = dictionary.FindAll(s => s.Name.Equals(word, StringComparison.OrdinalIgnoreCase));
Run Code Online (Sandbox Code Playgroud)

我有一些问题:

我的搜索速度是否最佳.我想现在.

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

我对这些任务没什么好处.你可以给我一些提高性能的好建议吗?谢谢

Meh*_*ari 5

如果您经常执行此操作,则可以构建一个Dictionary<string, List<DicDomain>>(或者Dictionary<string, DicDomain>如果Name是唯一的)来构建反向映射(从名称到一堆DicDomain对象)并使该字典保持最新.

在此之后,任务将是一个简单的哈希表查找:

 var list = dictionary[name];
Run Code Online (Sandbox Code Playgroud)