بسم الله الرحمن الرحيم

فئة 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