البرمجة

استخراج رموز فريدة من قائمة بلغة C# وLINQ

عند مواجهتنا لتحدي استخراج قائمة من السلاسل المفصولة بواسطة فواصل من قائمة من الكائنات في C#, يمكننا الاعتماد على مكتبة LINQ لتحقيق هذا الهدف بطريقة أنيقة وفعّالة.

أولاً وقبل الشروع في كتابة الشيفرة، يتعين علينا فهم البيانات الأولية. لدينا قائمة lst التي تحتوي على كائنات، وكل كائن يحتوي على خاصية codes التي تحتوي على سلسلة من الرموز الألفبائية مفصولة بفواصل.

باستخدام LINQ، يمكننا تحويل هذه القائمة إلى قائمة نهائية تحتوي على جميع الرموز المفصولة. فيما يلي الشيفرة التي تنفذ هذا الغرض:

csharp
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { // تعريف القائمة الأصلية List lst = new List { new MyObject { codes = "AA,BB,DD" }, new MyObject { codes = "AA,DD,EE" }, new MyObject { codes = "GG,JJ" } }; // استخدام LINQ لاستخراج الرموز وتجميعها في قائمة نهائية List<string> result = lst.SelectMany(obj => obj.codes.Split(',')).Distinct().ToList(); // طباعة النتيجة Console.WriteLine(string.Join(",", result)); } } // تعريف الكائن class MyObject { public string codes { get; set; } }

تقوم الشيفرة بفحص كل كائن في القائمة الأصلية، ثم تقوم باستخدام Split(',') لتقسيم سلسلة الرموز بناءً على الفواصل. بعد ذلك، يتم دمج جميع الرموز باستخدام SelectMany، وأخيراً يتم استخدام Distinct للتأكد من عدم وجود رموز مكررة. النتيجة النهائية تكون قائمة من السلاسل تحتوي على جميع الرموز المستخرجة.

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

بالطبع، دعونا نوسع قليلاً على الكود ونقدم بعض التوضيحات إضافية.

أولاً، يجب أن نفهم أن SelectMany هو أحد أساليب LINQ والذي يُستخدم لفحص عناصر متوسطة في قائمة متداخلة (nested list)، ويقوم بإرجاع تلك العناصر المتوسطة كقائمة واحدة. في حالتنا، نستخدمه لفحص كل كائن في lst واستخراج الرموز من خاصية codes المتضمنة سلاسل مفصولة بفواصل.

تُستخدم Split(',') لتقسيم السلسلة في خاصية codes بناءً على الفواصل. بمعنى آخر، يتم تحويل سلسلة مثل “AA,BB,DD” إلى مصفوفة ["AA", "BB", "DD"].

باستخدام SelectMany، يتم استخراج هذه المصفوفات الفردية وتجميعها في قائمة واحدة. ولكن هنا نستخدم Distinct() للتأكد من عدم وجود رموز مكررة في النهاية، حيث يقوم Distinct بإزالة أي عناصر مكررة.

أخيرًا، يتم تحويل القائمة النهائية إلى List باستخدام ToList() ويتم طباعة النتيجة باستخدام string.Join(",", result).

الهدف هنا هو الحصول على قائمة نهائية تحتوي على جميع الرموز المستخرجة دون تكرار، مما يوفر للمستخدم القدرة على الوصول إلى قائمة فريدة تحتوي على جميع الرموز المتاحة في الكائنات الأصلية.

مقالات ذات صلة

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

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر