私はキーだけが必要で、辞書の値は必要ありません。
これを行うコードをまだ取得できていません。別の配列を使用すると、私も削除を使用するので、作業量が多すぎることがわかりました。
辞書のキーのリストを取得するにはどうすればよいですか?
私はキーだけが必要で、辞書の値は必要ありません。
これを行うコードをまだ取得できていません。別の配列を使用すると、私も削除を使用するので、作業量が多すぎることがわかりました。
辞書のキーのリストを取得するにはどうすればよいですか?
回答:
List<string> keyList = new List<string>(this.yourDictionary.Keys);
yourDictionary
、関数で派生したオブジェクトの一部であるか、パラメーターの名前であるかについての混乱を明確にするために単に使用されます。
あなたはただ見ることができるはずです.Keys
:
Dictionary<string, int> data = new Dictionary<string, int>();
data.Add("abc", 123);
data.Add("def", 456);
foreach (string key in data.Keys)
{
Console.WriteLine(key);
}
すべてのキーのリストを取得するには
using System.Linq;
List<String> myKeys = myDict.Keys.ToList();
System.Linqは、.Net Framework 3.5以降でサポートされています。System.Linqの使用で問題が発生した場合は、以下のリンクを参照してください
using System.Linq;
。無視する答えを知る必要があります。申し訳ありません:)
.ToList()
何度も何度も使用したときにエラーが発生する理由が理解できなかったので、答えを探してここに来て、作業しているファイルに次のようなものがないことに気づきましたusing System.Linq
:)
Dictionary<string, object>.KeyCollection' does not contain a definition for 'ToList'
Marc Gravellの答えがうまくいくはずです。myDictionary.Keys
その実装するオブジェクトを返しICollection<TKey>
、IEnumerable<TKey>
そしてその非ジェネリック対応。
値にアクセスする予定がある場合は、次のようにディクショナリをループすることもできます(変更した例)。
Dictionary<string, int> data = new Dictionary<string, int>();
data.Add("abc", 123);
data.Add("def", 456);
foreach (KeyValuePair<string, int> item in data)
{
Console.WriteLine(item.Key + ": " + item.Value);
}
これらすべての複雑な答えを信じることはできません。キーのタイプが文字列であると想定します(または、遅延開発者の場合は 'var'を使用します):-
List<string> listOfKeys = theCollection.Keys.ToList();
using System.linq;
またはこのように:
List< KeyValuePair< string, int > > theList =
new List< KeyValuePair< string,int > >(this.yourDictionary);
for ( int i = 0; i < theList.Count; i++)
{
// the key
Console.WriteLine(theList[i].Key);
}