بسم الله الرحمن الرحيم
فئة List في مكتبة Framework.Net أشهر من نار على علم لكثرة استخدامها
و ما يميزها هو مرونة التعامل معها من حيث الإضافة والحذف والتعامل معها كمصدر للبيانات
و الوصول إلى عناصرها يكون إما برقم السجل أو من خلال الاستفسار Linq to Object الخاص بالفئات الموروثة من الإنترفيس IEnumerable
كما أننا نحتاج للتعامل مع Dictionary في حال أردنا أن تكون العناصر مفتاحية للوصول إلى عناصرها من خلال رقم السجل أو من خلال الكلمة المفتاحية له
وفي هذا الحالة يتوجب علينا إضافة مفتاح وحيد لكل سجل نضيفه
ولكن ماذا لو كان لديك مجموعة سجلات يوجد لها مفتاح وحيد ضمنا
مثلا عندما نحمل جدول من قاعدة البيانات فإنه غالبا يكون أحد حقوله مفتاحي والمشهور هو ID الرقم التلقائي
في هذه الحالة يأتي دور الفئة KeyedCollection وهي تجريدية أي abstract لهذا لا يمكن استخدامها مباشرة وإنما يتوجب عليك إنشاء فئة ترث منها
وذلك لتضمين المنهج
protected override string GetKeyForItem(object item)
الذي يحدد كيف يتم الحصول على المفتاح فمثلا يمكنك عمل فئة ولنسمها KeyedList public class KeyedList : KeyedCollection
وليكن أن عناصرها من نوع يتضمن حقل ID
حينها تستطيع أن تجعل المنهج السابق يعيد قيمة ID من item
الآن ما عليك إلا إضافة العناصر بشكل مباشر وكأنها List
ويمكنك الوصول إلى أي عنصر من خلال الإندكس Index أو الكي Key
ونكون قد اختصرنا على أنفسنا الاهتمام بإضافة وفحص المفتاح إلى الديكشينري Diectionary
و موفقون إن شاء الله
عبد الرحمن أحمد
12-02-2014