基于密钥过滤获取keyValuePair

时间:2015-06-20 08:27:51

标签: c# dictionary

我使用myDictionary.Keys.Where来获取一个序列,但它只返回键(我的谓词在键上强制条件)。我也需要得到相关的值,我不知道如何轻松地做到这一点,我确信我会错过一些基本的功能..

1 个答案:

答案 0 :(得分:2)

var dict = new Dictionary<string, long>();

类似的东西:

IEnumerable<long> myvalues = dict.Where(x => x.Key == "A" || x.Key == "B")
                                 .Select(x => x.Value);

将返回您想要的Value

IEnumerable<KeyValuePair<string, long>> myvalues = dict.Where(x => x.Key == "A" || x.Key == "B");

最后一个将返回完整的KeyValuePair<string, long>,其中包含两个属性(KeyValue

另一个(较慢的)解决方案:

IEnumerable<long> myvalues = dict.Keys.Where(x => x == "A" || x == "B")
                                      .Select(x => dict[x]);

它的速度较慢,因为在过滤后,您会查找找到的Key字典。