C# में Dictionary<TKey, TValue> से सभी कुंजियों (keys) को एक सूची (List<TKey>) के रूप में प्राप्त करने के लिए Keys प्रॉपर्टी का उपयोग करके कंस्ट्रक्टर या ToList() मेथड का उपयोग किया जाता है।
उदाहरण
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
// डिक्शनरी बनाएं
var dictionary = new Dictionary
{
{ 1, "One" },
{ 2, "Two" },
{ 3, "Three" },
{ 4, "Four" },
{ 5, "Five" },
{ 6, "Six" },
{ 7, "Seven" },
{ 8, "Eight" }
};
Console.WriteLine($"डिक्शनरी आकार: {dictionary.Count}");
// विधि 1: List कंस्ट्रक्टर (सबसे सीधा)
List keys1 = new List(dictionary.Keys);
// विधि 2: LINQ ToList()
List keys2 = dictionary.Keys.ToList();
// विधि 3: मैन्युअल लूप (पुराने कोड में)
List keys3 = new List();
foreach (int key in dictionary.Keys)
keys3.Add(key);
Console.WriteLine("\nकुंजियों की सूची:");
foreach (int key in keys1)
{
Console.WriteLine($" {key}");
}
// सत्यापन
Console.WriteLine($"\nसभी विधियां समान परिणाम देती हैं: {keys1.SequenceEqual(keys2) && keys2.SequenceEqual(keys3)}");
}
}
आउटपुट
डिक्शनरी आकार: 8 कुंजियों की सूची: 1 2 3 4 5 6 7 8 सभी विधियां समान परिणाम देती हैं: True
Keys प्रॉपर्टी और KeyCollection
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
var dict = new Dictionary
{
{ "Apple", 1 },
{ "Banana", 2 },
{ "Cherry", 3 }
};
// Keys प्रॉपर्टी KeyCollection लौटाती है (ICollection)
var keysCollection = dict.Keys;
Console.WriteLine($"प्रकार: {keysCollection.GetType().Name}"); // KeyCollection
Console.WriteLine($"गिनती: {keysCollection.Count}");
Console.WriteLine($"केवल पढ़ने योग्य: {keysCollection.IsReadOnly}");
// KeyCollection सीधे पुनरावृति योग्य है
Console.WriteLine("\nKeys प्रॉपर्टी से सीधे पुनरावृति:");
foreach (string key in dict.Keys)
{
Console.WriteLine($" {key} -> {dict[key]}");
}
// Contains जांच
Console.WriteLine($"\n'Apple' कुंजी मौजूद: {dict.Keys.Contains("Apple")}");
Console.WriteLine($"'Durian' कुंजी मौजूद: {dict.Keys.Contains("Durian")}");
}
}
आउटपुट
प्रकार: KeyCollection गिनती: 3 केवल पढ़ने योग्य: True Keys प्रॉपर्टी से सीधे पुनरावृति: Apple -> 1 Banana -> 2 Cherry -> 3 'Apple' कुंजी मौजूद: True 'Durian' कुंजी मौजूद: False
व्यावहारिक उपयोग: कुंजियों को सॉर्ट करना, फ़िल्टर करना
using System;
using System.Collections.Generic;
using System.Linq;
public class Demo
{
public static void Main()
{
var scores = new Dictionary
{
{ "अमित", 85 },
{ "प्रिया", 92 },
{ "राहुल", 78 },
{ "स्नेहा", 96 },
{ "विकास", 70 }
};
// कुंजियों को सूची में बदलें और सॉर्ट करें
var sortedNames = scores.Keys.OrderBy(k => k).ToList();
Console.WriteLine("नाम वर्णानुक्रम में:");
foreach (string name in sortedNames)
Console.WriteLine($" {name}: {scores[name]}");
// उच्च स्कोर वाले छात्रों की कुंजियां
var highScorers = scores.Keys.Where(k => scores[k] >= 90).ToList();
Console.WriteLine("\n90+ स्कोर वाले:");
foreach (string name in highScorers)
Console.WriteLine($" {name}: {scores[name]}");
// कुंजियों को सरणी में बदलें
string[] keysArray = scores.Keys.ToArray();
Console.WriteLine($"\nकुंजियों की सरणी: [{string.Join(", ", keysArray)}]");
}
}
आउटपुट
नाम वर्णानुक्रम में: अमित: 85 प्रिया: 92 राहुल: 78 स्नेहा: 96 विकास: 70 90+ स्कोर वाले: प्रिया: 92 स्नेहा: 96 कुंजियों की सरणी: [अमित, प्रिया, राहुल, स्नेहा, विकास]
महत्वपूर्ण बिंदु
dictionary.KeysएकKeyCollectionलौटाता है, जोICollection<TKey>लागू करता हैnew List<TKey>(dict.Keys)याdict.Keys.ToList()से सूची बनाएंKeyCollectionकेवल-पढ़ने योग्य है - इसमें Add/Remove नहीं कर सकते- डिक्शनरी में परिवर्तन
Keysसंग्रह में प्रतिबिंबित होते हैं (लाइव व्यू) - क्रम अनिर्दिष्ट है (हैश टेबल क्रम) - सॉर्ट करने के लिए
OrderByउपयोग करें ContainsKey()की तुलना मेंKeys.Contains()समान प्रदर्शन देता है