次のコードはリストをループして値を取得しますが、キーと値の両方を取得する同様のステートメントをどのように記述しますか
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>();
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);
}
謝罪...
これは間違ったトピックでした(値のループ)。私の問題は、値だけではなく、キーと値のペアをループすることでした。 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
デイブ