একটি IENumerable <কীভ্যালিউপায়ার <>>> থেকে একটি অভিধান তৈরি করা


173

আমার কাছে এমন একটি পদ্ধতি রয়েছে যা একটি ফেরত দেয় IEnumerable<KeyValuePair<string, ArrayList>>তবে কিছু কলারকে অভিধানের জন্য পদ্ধতির ফলাফলের প্রয়োজন হয়। আমি কিভাবে রূপান্তর করতে পারেন IEnumerable<KeyValuePair<string, ArrayList>>একটি মধ্যে Dictionary<string, ArrayList>যাতে আমি ব্যবহার করতে পারেন TryGetValue?

পদ্ধতি:

public IEnumerable<KeyValuePair<string, ArrayList>> GetComponents()
{
  // ...
  yield return new KeyValuePair<string, ArrayList>(t.Name, controlInformation);
}

আহ্বানকারী:

Dictionary<string, ArrayList> actual = target.GetComponents();
actual.ContainsKey("something");

সম্ভাব্য সদৃশ? stackoverflow.com/questions/7850334/...
— Coolkau

উত্তর:


329

আপনি যদি .NET 3.5 বা .NET 4 ব্যবহার করে থাকেন তবে লিনিকিউ ব্যবহার করে অভিধান তৈরি করা সহজ:

Dictionary<string, ArrayList> result = target.GetComponents()
                                      .ToDictionary(x => x.Key, x => x.Value);

একটা যেমন জিনিস আছে IEnumerable<T1, T2>কিন্তু একটি KeyValuePair<TKey, TValue>জরিমানা।


15
আপনি মনে করেন যে এমন কোনও কল আসবে যাতে আর্গুমেন্টের প্রয়োজন হবে না, অভিধান <টি কে, টিভিয়াল> আইনিংরেবল <কীভ্যালিউ পেয়ার <টি কে, টিভিয়াল >> প্রয়োগ করে তবে ওহ ভাল। আপনার নিজের তৈরি করার জন্য যথেষ্ট সহজ।
— কেসি 21

6
@ ড্যানভেরডোলিনো আমি এটি জানি। আপনি মনে করতে পারেন কারণ এটি কেভিপিগুলির একটি মূল সংখ্যার সাথে আপনি করতে চাইতে পারেন এমন একটি সাধারণ জিনিসগুলির মতো।
— কেসি

17
২০১ now এখন, এবং আমাকে এখনও এটি গুগল করতে হয়েছিল। আপনি ভাবতে পারেন যে একটি কন্সট্রাকটর জন্য হবে Dictionaryযে গ্রহণ একটি IEnumerable<KeyValuePair<TKey, TValue>>ঠিক List<T>একটি লাগে IEnumerable<T>। এছাড়াও কী বা মান AddRangeজোড় Addলাগে এমন কোনও বা এমনকি নেই । কি হয়েছে?
— মর মাউস

5
এখন এটি 2017, এবং আমরা এটি একটি এক্সটেনশন পদ্ধতি হিসাবে যুক্ত করতে পারি!
— ক্রিস বুশ

2
অনেকগুলি "আমি বিশ্বাস করতে পারি না net নেট কোরটির <স্পষ্ট বৈশিষ্ট্য> নেই" মোরলিংকের মাধ্যমে সমাধান করা হয়েছে । একটি parameterless IEnumerable সহ <KeyValuePair> ->ToDictionary()
— aaaaaa

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.