我在第一种情况下有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}
是否可以像这样编写或者我必须使用不同的数组方法?
答案 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.Values
是Tuple<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);
}