كيف يمكنني استرداد العناصر الأولى من القاموس في C#؟

StackOverflow https://stackoverflow.com/questions/824494

  •  05-07-2019
  •  | 
  •  

سؤال

هل هناك طريقة لاسترداد العناصر الأولى من القاموس في C#؟

هل كانت مفيدة؟

المحلول

لاحظ أنه لا يوجد طلب صريح لـ Dictionary, ، لذلك على الرغم من أن الكود التالي سيعود n العناصر ، لا يوجد ضمان لكيفية تحديد الإطار أي من n عناصر للعودة.

using System.Linq;

yourDictionary.Take(n);

الكود أعلاه يعيد IEnumerable<KeyValuePair<TKey,TValue>> تحتوي n العناصر. يمكنك بسهولة تحويل هذا إلى أ Dictionary<TKey,TValue> مثل ذلك:

yourDictionary.Take(n).ToDictionary();

نصائح أخرى

لم يتم طلب القواميس في حد ذاته, ، لا يمكنك الاعتماد على "الأول" بمعنى ذلك. من MSDN: "للتعداد ... الترتيب الذي يتم فيه إرجاع العناصر غير محدد."

قد تكون قادرًا على استخدام Orderdictionary اعتمادًا على إصدار النظام الأساسي الخاص بك ، وهو ليس شيئًا معقدًا بشكل خاص لإنشاء فئة من القاموس النحلي المخصص.

لا يمكنك حقًا أخذ العناصر الأولى من أ Dictionary<TKey,TValue> لأنها ليست مجموعة مرتبة. لذلك ليس لديه أي مفهوم أولاً ، أخيرًا ، إلخ ... ولكن كما أشار الآخرون ، إذا كنت ترغب فقط في أخذ عناصر n بغض النظر عن الطلب ، تعمل وظيفة take linq بشكل جيد

var map = GetTheDictionary();
var firstFive = map.Take(5);

هل يمكن استخدام LINQ على سبيل المثال؟

 var dictionary = new Dictionary<string, int>();

 /// Add items to dictionary

 foreach(var item in dictionary.Take(5))
 {
      // Do something with the first 5 pairs in the dictionary
 }

في كثير من الأحيان ، لن ينجح حذف فريق الممثلين إلى القاموس:

dictionary = dictionary.Take(n);

ولن حالة بسيطة مثل هذا:

dictionary = dictionary.Take(n).ToDictionary();

الأسلوب الأكثر وضوحًا: طاقم صريح:

dictionary = dictionary.Take(n).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top