2017-02-24 1 views
-1

をrepetedすることができ、私はそれを充填し、印刷した後、それは私にこれを与えることをこのpublic static IDictionary<int, int> dictionaryLIndex;C#のgetKey - 値は

を持っている:

key = 0, value = 18 
key = 1, value = 2 
key = 2, value = 1 
key = 3, value = 18 
key = 4, value = 3 

この辞書は、使用して作成されている。

dictionaryLIndex= ELWIndex.ToDictionary(pair => pair.Key, pair => pair.Value);

ELWIndex私は辞書から印刷IList<KeyValuePair<int,int>>ので、キーが実際にインデックス0ですリスト。

これを明確にするには、値に基づいて辞書のキーを取得する必要があります。ここのことは、この値が繰り返すことができるので、私はこれをどのように達成できるのでしょうか?このプロセスを時々呼び出すことができるということを数えます。

最終的な目標は、そのキー(リストからのインデックス)を取得し、別のリスト内でその位置を検索し、そのインデックスに何かをすることです。

ちょうど私に来たちょうど考えました。そのキーで最初の値を取得した後、そのキーと値のペアをdictからすべて削除できますか?次回はその値を持つキーが1つだけになります...

どのようにして与えられた値からキーを取得できますか?そして、この最後の第二の考えは実行可能ですか?検索、kvpnullある場合

var search = 18; 
var kvp = dictionaryLIndex 
    .Where(p => p.Value == search) 
    .Cast<KeyValuePair<int,int>?>() 
    .FirstOrDefault(); 

:提供される任意の助けを

おかげで、本当に価値に基づいて辞書から最初のキーと値のペアを取得するために使用FirstOrDefault

+0

なぜダウン投票? – NachoMiguel

+1

*「キーの印刷は実際にはリストのインデックスです」と思うのはなぜですか?インデックスからではなく、リストからキーを使用しています –

+0

はい、あなたは正しい@SergeyBerezovskiyです。 – NachoMiguel

答えて

1

をapreciatedされるだろう値が辞書にありません。

kvpnullではない場合は、kvp.Keyを使用してキーを見つけます。後でそのキーをdictionaryLIndexから削除することができます。

if (kvp.HasValue) { 
    var key = kvp.Value.Key; 
    Console.WriteLine("Key = {0}", key); 
} 

注:KeyValuePair<int,int>は値型であり、両方のメンバーが同様に値型であるためキャストKeyValuePair<int,int>?をNULL可能にする必要があります。

+0

私はkvp(kvp.key)からキーを取得しようとしていますが、動作していません。キャストしようとしましたが、運がありません。 – NachoMiguel

+0

@NachoMiguel編集を参照してください。 – dasblinkenlight

+0

多くの感謝の男 – NachoMiguel

0

私が正しくあなたを理解し、あなたが重複する値が含まれていない別の辞書を作成しようとしていると仮定すると、私はこれがあなたのために働くことができると思う:

Dictionary<int, int> noDuplicates = new Dictionary<int, int>(); 
foreach (var item in dictionaryLIndex) 
{ 
    if (!noDuplicates.ContainsValue(item.Value)) 
    { 
     noDuplicates.Add(item.Key,item.Value); 
    } 
} 
関連する問題