0

重複の可能性:
Dictionary から n 番目の要素を取得するにはどうすればよいですか?

アイテムのDictionary合計があり、 <のときに th アイテムYが必要な場合、これを達成するにはどうすればよいですか?NNY

例:

Dictionary<int, string> items = new Dictionary<int, string>();

items.add(2, "Bob");
items.add(5, "Joe");
items.add(9, "Eve");

// We have 3 items in the dictionary.
// How to retrieve the second one without knowing the Key?

string item = GetNthItem(items, 2);

書き方はGetNthItem()

4

4 に答える 4

3

ADictionary<K,V>には固有の順序付けがないため、実際には N 番目の項目のような概念はありません。

KeyValuePair<TKey, TValue>列挙のために、ディクショナリ内の各項目は、値とそのキーを表す構造体として扱われ ます。アイテムが返される順序は定義されていません。

そうは言っても、今すぐ位置 N で任意に見つかったアイテムが必要な場合は、次を使用できますElementAt

string item = items.ElementAt(2).Value;

ElementAt(同じコードを再度実行した場合、または立て続けに 2 回呼び出した場合でも、同じアイテムが同じ位置に見つかるという保証はないことに注意してください。)

于 2011-06-17T10:40:05.997 に答える
2

辞書は順序付けされていません。n番目の項目はありません。

OrderedDictionary と Item() を使用する

于 2011-06-17T10:40:09.923 に答える
1

LINQ の使用:

Dictionary<int, string> items = new Dictionary<int, string>();

items.add(2, "Bob");
items.add(5, "Joe");
items.add(9, "Eve");

string item = items.Items.Skip(1).First();

データについてどの程度知っているかによって、FirstOrDefaultの代わりに使用したい場合があります。First

また、ディクショナリにはアイテムの順序付けが必要ですが (そうしないと、アイテムを反復処理できません)、順序付けは単純な FIFO であることに注意IDictionaryしてください (アイテムを必要としないため、他のものにすることは簡単ではありません)。になるIComparable)。

于 2011-06-17T10:39:27.567 に答える
0

string item = items[items.Keys[1]];

ただし、辞書はソートされないことに注意してください。要件に応じて、SortedDictionary.

于 2011-06-17T10:39:24.400 に答える