2016-11-13 9 views
0

私は、キーの値のタプルを使用し、それがこの辞書から取得する方法<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型、char型}でもある値を取得したい最初のケースでは2つの辞書を持っています見つけ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

ディクショナリに距離より大きな値が1つあるかどうかを確認しようとしていますか?単一の要素ではなくコレクションがあるため、コードは機能しません。 – 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

あなたは間違った方法でこれを行っています。

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

さて、あなたがこれを行うには複数の方法があります:あなたはValueないValues

正しい方法を使用する必要があります。しかし、最初に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 
} 
関連する問題