একটি 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.