web-dev-qa-db-ja.com

キーと値の両方を取得してSortedListをループする方法

次のコードはリストをループして値を取得しますが、キーと値の両方を取得する同様のステートメントをどのように記述しますか

foreach (string value in list.Values)
{
    Console.WriteLine(value);
}

たとえば、このようなもの

    foreach (string value in list.Values)
{
    Console.WriteLine(value);
        Console.WriteLine(list.key);
}

リストのコードは次のとおりです。

SortedList<string, string> list = new SortedList<string, string>();
18
Wayneio
foreach (KeyValuePair<string, string> kvp in list)
{
    Console.WriteLine(kvp.Value);
    Console.WriteLine(kvp.Key);
}

から msdn

GetEnumeratorは、KeyValuePair<TKey, TValue>を反復処理するSortedList<TKey, TValue>タイプの列挙子を返します。

Jonが述べたように、反復変数のタイプ名を記述する代わりにvarキーワードを使用できます(タイプは使用法から推測されます):

foreach (var kvp in list)
{
    Console.WriteLine(kvp.Value);
    Console.WriteLine(kvp.Key);
}
31

謝罪...

これは間違ったトピックでした(値のループ)。私の問題は、値だけではなく、キーと値のペアをループすることでした。 SortedListコレクションから値を取得するための可能なオプションとして異議がない場合は、これをここに残します。

私はこのエラーも理解しようとしましたが、私の解決策はDictionaryEntryタイプを使用してエラーが発生したKeyValuePairタイプを置き換えることでした。 MSリファレンスから見つかりました https://msdn.Microsoft.com/en-us/library/system.collections.dictionaryentry(v = vs.100).aspx

私の場合、SortedListタイプのコレクションを作成するコードがあり、varタイプもKeyValuePairタイプも機能しませんでした(varがキーを読み取ろうとしたときにエラーが発生しましたコレクションアイテムの/ valueとKeyValuePairが初期ループ定義でエラーになりました。どちらも"Specified cast is not valid"でエラーになりました)

だからここに私のために働いたコードのサンプルがあります:

SortedList _dims = GetList("mysortedlist");
foreach (DictionaryEntry kvp in _dims)
{
    Console.WriteLine(kvp.Key.ToString());
    Console.WriteLine(kvp.Value.ToString()); 
}

HTH

デイブ

0
Dave