كيف يمكنني استرداد العناصر الأولى من القاموس في C#؟
-
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);