【发布时间】:2018-06-29 07:10:43
【问题描述】:
我有类似Link 中提到的问题,使用部分密钥从Dictionary 获取数据,而我的密钥DataType 是string。
这就是我的字典的样子
Key Values
GUID1+GUID2+GUID3 1, 2, 3
GUID1+GUID2+GUID3 4, 5, 6
GUID1+GUID2+GUID3 7, 8, 9
但提供的解决方案是使用Dictionary 中的linq 扩展方法从Dictionary 获取数据。我只想使用TryGetValue 传递Regex 或通配符表达式从Dictionary 中提取数据。
【问题讨论】:
-
请注意,这样做会失去字典提供的任何性能提升。原因是字典首先找到与键的哈希码匹配的项目,然后对每个项目键执行相等比较以找到完全匹配的项目。如果您使用任何类型的部分/通配符方法,这是不可能的,因此您不妨使用
.Where(kv => regex.IsMatch(kv.Key))之类的东西来获得具有所有匹配结果的IEnumerable。 -
我不确定这是否正确,但是否可以创建一个像
Dictionary<Regex, MyClass> myDictionary new Dictionary<Regex, MyClass>()这样的Dictionary并在myDictionary.TryGetValue("some regex", out myData)中使用正则表达式获取,这会对性能产生任何影响。 -
我提到了它,但是那里提供的解决方案是使用扩展方法,但我想在不影响性能的情况下使用
Dictionary中的TryGetValue方法获取数据。我在我的问题@Sinatr 中提到了这一点 -
听起来你想要一本字典,其中外部的有
GUID+GUID2作为键,而内部的有GUID3。
标签: c# .net dictionary