Я хочу лише клавіші, а не значення словника.
Я ще не зміг отримати жодного коду для цього. Використання іншого масиву виявилося занадто великою роботою, тому що я використовую також видалити.
Як отримати список ключів у словнику?
Я хочу лише клавіші, а не значення словника.
Я ще не зміг отримати жодного коду для цього. Використання іншого масиву виявилося занадто великою роботою, тому що я використовую також видалити.
Як отримати список ключів у словнику?
Відповіді:
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'
Відповідь Марка Гравелла має працювати для вас. 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);
}
Питання трохи складне для розуміння, але я здогадуюсь, що проблема полягає в тому, що ви намагаєтесь видалити елементи зі словника, переглядаючи клавіші. Я думаю, що в цьому випадку у вас немає іншого вибору, як використовувати другий масив.
ArrayList lList = new ArrayList(lDict.Keys);
foreach (object lKey in lList)
{
if (<your condition here>)
{
lDict.Remove(lKey);
}
}
Якщо ви можете використовувати загальні списки та словники замість ArrayList, я б, однак, вищезазначене повинно просто працювати.
Я не можу повірити на всі ці суперечливі відповіді. Припустимо, що тип має тип: string (або використовуйте "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);
}