البرمجة

تحسين تنظيم البيانات في C# باستخدام الفئات والقواميس

في بداية الأمر، يُشير الكود الأصلي إلى إنشاء مصفوفة تجمعية في C# باستخدام الفئة Dictionary. يتم إنشاء قاموس يحتوي على مفاتيح من نوع int وقيم كل مفتاح هي قاموس آخر من نوع Dictionary. ثم يتم الوصول إلى القيمة المتعلقة بالمفتاح 10 وطباعة القيم الموجودة فيه.

لجعل الكود أكثر أناقة وصيانة، قمت بإنشاء فئتين، DataContainer وDataValue. الفئة DataContainer تحتوي على متغيرين، index و DataValue، حيث index يُعبِر عن المفتاح، وDataValue يُعبِر عن القيمة المرتبطة بالمفتاح. الفئة DataValue تحتوي على اسم name وقائمة IntegerValues التي تحمل القيم الصحيحة.

ثم قمت بمحاولة ملء البيانات باستخدام الكود الذي أعطيته، ولكن واجهت مشكلة في النحو. السبب في ذلك هو أنك تحاول تعيين قائمة DataValue لكائن من النوع List، ولكن تحتاج إلى استخدام النوع DataValue. يمكنك تصحيح ذلك عن طريق تعيين DataValue مباشرةً كما هو موضح في الكود التالي:

csharp
public List harakatSininilMabsutoh = new List() { new DataContainer { index = 10, DataValue = new DataValue { name = "first", IntegerValues = new List<int> {9, 55, 18, 11} } }, new DataContainer { index = 10, DataValue = new DataValue { name = "second", IntegerValues = new List<int> {5, 54, 18, 11} } } };

الآن، يحتوي كل عنصر في harakatSininilMabsutoh على index و DataValue، ويمكنك الوصول إلى البيانات بشكل مُنظم. لطرح قيم IntegerValues التي لها index يساوي 10، يمكنك استخدام الكود التالي:

csharp
// عند استخدام LINQ var valuesWithIndex10 = harakatSininilMabsutoh .Where(item => item.index == 10) .Select(item => item.DataValue.IntegerValues) .FirstOrDefault(); // طباعة القيم foreach (var value in valuesWithIndex10) { Console.WriteLine(value); }

يتم استخدام LINQ هنا لاستخراج القيم التي لها index يساوي 10، ثم يتم طباعة هذه القيم. يمكنك تضمين هذا الجزء من الكود في برنامجك لتحقيق النتائج المرجوة.

المزيد من المعلومات

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

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

قد تبدو الفئات التالية أفضل:

csharp
class DataContainer { public DataContainer(int index) { Index = index; DataValues = new List(); } public int Index { get; set; } public List DataValues { get; set; } } class DataValue { public DataValue(string name, List<int> integerValues) { Name = name; IntegerValues = integerValues; } public string Name { get; set; } public List<int> IntegerValues { get; set; } }

ثم يمكنك ملء البيانات بهذه الطريقة:

csharp
List dataContainers = new List { new DataContainer(10) { DataValues = { new DataValue("first", new List<int> {9, 55, 18, 11}), new DataValue("second", new List<int> {5, 54, 18, 11}) } }, new DataContainer(40) { DataValues = { new DataValue("first", new List<int> {4, 24, 5, 0}), new DataValue("second", new List<int> {42, 58, 23, 8}) } } };

هذا التنظيم يجعل من السهل فهم هيكل البيانات ويسهم في جعل الكود أكثر قابلية للصيانة. يمكنك الآن الوصول إلى القيم بشكل مباشر من خلال التنقل في القوائم دون الحاجة إلى العديد من الحلقات المتداخلة.

مثلا، للوصول إلى القيم التي لها index يساوي 10، يمكنك استخدام الكود التالي:

csharp
var valuesWithIndex10 = dataContainers .FirstOrDefault(container => container.Index == 10)? .DataValues .SelectMany(dataValue => dataValue.IntegerValues); // طباعة القيم foreach (var value in valuesWithIndex10) { Console.WriteLine(value); }

هذا يقوم بالبحث عن DataContainer الذي يحمل index يساوي 10، ثم يستخرج القيم المتعلقة بذلك.

زر الذهاب إلى الأعلى