我们有一个多租户应用程序,其运行的站点实例存储在ConcurrentDictionary<string, SiteInstance>中,其中string是站点的主机名。
我们现在要求每个站点实例支持多个主机名。作为一种临时解决方案,我首先按键进行搜索,如果没有找到匹配项,则对字典执行LINQ查询,以查找具有匹配主机名的实例。
这里有没有性能更好/更快的解决方案?
注:映射到每个站点实例的主机名列表是可变的。
发布于 2012-10-30 18:32:24
刚刚写了一个复杂的答案,我已经看到了@Mudu的答案,如果真的这么简单,它显然是一个更好的方法。不管怎样,这是我的..。我猜它的一个优点是它很容易扩展。
创建一个名为HostNames的继承自List<String>的小类。然后,如果列表中的任何内容与其他内容匹配,则可以覆盖Equals()方法和GetHashCode()以返回匹配。
然后,您可以将这个类用作字典键ConcurrentDictionary<HostNames, SiteInstance>
要检索值,您需要构建一个hostName对象:
var hostName = new HostNames();
hostName.Add("hostName1");
var siteInstance = concurrentDictionary[hostName];https://stackoverflow.com/questions/13136970
复制相似问题