2016-11-13 82 views
0

我有我用元組鍵值第一種情況下2個字典,它工作正常,像這樣如何從字典<char,Tuple <int, char>>特定鍵的int值?

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

但在第二種情況下我想要得到的值,這也是在元組{INT,字符}但是我不能發現類似result.Values.Item1

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

是否有可能把它寫這樣的事情或者我必須使用不同的陣列的方法?

+0

不清的問題,你有什麼要求,最後? – AnjumSKhan

+0

你是否試圖檢查字典中是否有一個值比距離更大?你的代碼不起作用,因爲你有一個集合,而不是一個單一的元素! – user3185569

+0

是的,我的問題是如何從該元組(int,char)獲取值int作爲字典值 – Universus

回答

2

result.Values的結果是集合Tuple<int, char> 您可以通過訪問集合中的單個項目字典鍵:

result[someChar].Item1 

或者你可以循環,雖然如下的所有值:

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

你正在做錯誤的方式。你必須使用ValueValues

正確方法:

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); 
    } 
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 
} 
相關問題