【发布时间】:2012-12-18 05:40:53
【问题描述】:
我有这个:
Dictionary<integer, string> dict = new Dictionary<integer, string>();
我想选择字典中包含值abc 的所有项目。
是否有一个内置函数可以让我轻松做到这一点?
【问题讨论】:
标签: c# .net vb.net dictionary
我有这个:
Dictionary<integer, string> dict = new Dictionary<integer, string>();
我想选择字典中包含值abc 的所有项目。
是否有一个内置函数可以让我轻松做到这一点?
【问题讨论】:
标签: c# .net vb.net dictionary
嗯,使用 LINQ 相当简单:
var matches = dict.Where(pair => pair.Value == "abc")
.Select(pair => pair.Key);
请注意,这甚至不会有一点效率 - 这是一个 O(N) 操作,因为它需要检查每个条目。
如果您需要经常这样做,您可能需要考虑使用其他数据结构 - Dictionary<,> 专为快速查找而设计按键。
【讨论】:
Dictionary<,> 只是Dictionary<TKey, TValue> 的简写。你的字典有多大?您需要搜索多少个值?每秒一次并不常见,如果它是一个相当小的字典并且您只寻找一个值......
内置功能?不抱歉......但另一种(不太漂亮)的方法是使用foreach(KeyValuePair<integer, string> ...进行迭代
【讨论】: