如何从Dictionary <char,tuple =“”<int,=“”char =“”>&gt;特定键的int值?

时间:2016-11-13 14:14:28

标签: c# dictionary

我在第一种情况下有2个字典我使用Tuple作为键值,它可以正常工作

Dictionary<Tuple<char, char>, int> pairPoints = new Dictionary<Tuple<char, char>, int>();
foreach (var items in this.pairPoints)
   Console.WriteLine(items.Key.Item1);

但在第二种情况下我想得到的值也是在元组{int,char}但是我找不到像 result.Values.Item1

这样的东西
Dictionary<char, Tuple <int, char>> result = new Dictionary<char, Tuple<int, char>>();
if(distance < result.Values.Item1) {//do my things}

是否可以像这样编写或者我必须使用不同的数组方法?

3 个答案:

答案 0 :(得分:2)

你有多种方法可以做到这一点。但您首先需要了解result.Values是一个集合而不是单个值,这就是您无法访问result.Values.Item1的原因。

检查是否有任何结果匹配:

if(result.Values.Any(t => t.Item1 > distance))
{

}

或循环匹配

的结果
foreach(var item in result.Values.Where(t => t.Item1 > distance))
{
  // use item.Item1 and item.Item2
}

答案 1 :(得分:2)

result.ValuesTuple<int, char>集合 您可以通过字典键访问集合中的单个项目:

result[someChar].Item1

或者你可以按如下方式遍历所有值:

foreach(var tuple in result.Values)
    Console.WriteLine(tuple.Item1)

答案 2 :(得分:1)

你这样做是错误的。您必须使用Value而不是Values

正确的方式:

Dictionary<char, Tuple <int, char>> result = new Dictionary<char, Tuple<int, char>>();
    foreach (var items in result)
    {
        Console.WriteLine(items.Value.Item1);
        Console.WriteLine(items.Value.Item2);
    }