আমি কেবল কীগুলিই চাই এবং কোনও অভিধানের মানগুলিও চাই না।
এটি করার জন্য আমি কোনও কোড পেতে সক্ষম হইনি। অন্য অ্যারে ব্যবহার করা প্রমাণিত হয়েছে যে আমি অপসারণও ব্যবহার করি তেমনি খুব বেশি কাজ।
কীভাবে আমি অভিধানে কীগুলির একটি তালিকা পেতে পারি?
আমি কেবল কীগুলিই চাই এবং কোনও অভিধানের মানগুলিও চাই না।
এটি করার জন্য আমি কোনও কোড পেতে সক্ষম হইনি। অন্য অ্যারে ব্যবহার করা প্রমাণিত হয়েছে যে আমি অপসারণও ব্যবহার করি তেমনি খুব বেশি কাজ।
কীভাবে আমি অভিধানে কীগুলির একটি তালিকা পেতে পারি?
উত্তর:
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 ফ্রেমওয়ার্ক 3.5 বা ততোধিক সংস্করণে সমর্থিত। আপনি যদি সিস্টেম.লিনক ব্যবহারে কোনও সমস্যার মুখোমুখি হন তবে নীচের লিঙ্কগুলি দেখুন
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);
}
}
আপনি যদি অ্যারেলিস্টের পরিবর্তে জেনেরিক তালিকা এবং অভিধান ব্যবহার করতে পারেন তবে আমি করব, তবে উপরেরটি কেবল কাজ করা উচিত।
আমি এই সব গুলিয়ে দেওয়া উত্তরগুলিতে বিশ্বাস করতে পারি না। ধরে নেওয়া কীটি প্রকারের: স্ট্রিং (অথবা আপনি যদি অলস বিকাশকারী হন তবে 'ভার' ব্যবহার করুন): -
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);
}