Saya hanya ingin Kunci dan bukan Nilai Kamus.
Saya belum bisa mendapatkan kode untuk melakukan ini. Menggunakan array lain terbukti terlalu banyak bekerja karena saya menggunakan hapus juga.
Bagaimana cara saya mendapatkan Daftar Kunci dalam Kamus?
Saya hanya ingin Kunci dan bukan Nilai Kamus.
Saya belum bisa mendapatkan kode untuk melakukan ini. Menggunakan array lain terbukti terlalu banyak bekerja karena saya menggunakan hapus juga.
Bagaimana cara saya mendapatkan Daftar Kunci dalam Kamus?
Jawaban:
List<string> keyList = new List<string>(this.yourDictionary.Keys);
yourDictionarymerupakan bagian dari objek, diturunkan dalam fungsi atau nama parameter.
Anda harus dapat melihat .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);
}
Untuk mendapatkan daftar semua kunci
using System.Linq;
List<String> myKeys = myDict.Keys.ToList();
System.Linq didukung dalam .Net framework 3.5 atau lebih tinggi. Lihat tautan di bawah ini jika Anda menghadapi masalah dalam menggunakan System.Linq
using System.Linq;Saya perlu tahu jawaban mana yang harus diabaikan. Maaf :)
.ToList()saya membuat kesalahan ketika saya telah menggunakannya berkali-kali, jadi saya datang ke sini untuk mencari jawaban dan saya menyadari file yang saya kerjakan tidak ada using System.Linq:)
Dictionary<string, object>.KeyCollection' does not contain a definition for 'ToList'
Jawaban Marc Gravell seharusnya bekerja untuk Anda. myDictionary.Keysmengembalikan objek yang mengimplementasikan ICollection<TKey>, IEnumerable<TKey>dan mitra non-generiknya.
Saya hanya ingin menambahkan bahwa jika Anda berencana mengakses nilainya juga, Anda dapat melihat-lihat kamus seperti ini (contoh yang dimodifikasi):
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);
}
Pertanyaannya agak sulit untuk dipahami, tetapi saya menduga masalahnya adalah Anda mencoba untuk menghapus elemen dari Kamus saat Anda beralih ke tombol. Saya pikir dalam hal ini Anda tidak punya pilihan selain menggunakan array kedua.
ArrayList lList = new ArrayList(lDict.Keys);
foreach (object lKey in lList)
{
if (<your condition here>)
{
lDict.Remove(lKey);
}
}
Jika Anda dapat menggunakan daftar umum dan kamus alih-alih ArrayList maka saya akan melakukannya, namun yang di atas seharusnya hanya berfungsi.
Saya tidak percaya semua jawaban yang berbelit-belit ini. Dengan asumsi kuncinya adalah type: string (atau gunakan 'var' jika Anda seorang pengembang yang malas): -
List<string> listOfKeys = theCollection.Keys.ToList();
using System.linq;
Atau seperti ini:
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);
}