LINQ Union Method

LINQ Union Method


دالة Union() في LINQ تُستخدم لدمج مجموعتين من نفس النوع، ولكن **مع إزالة العناصر المكررة**، يعني الناتج يكون فيه العناصر الفريدة فقط من كلا المجموعتين.



✅ مثال باستخدام Method Syntax:


List<int> list1 = new List<int>() { 1, 2, 3, 4, 5 };
List<int> list2 = new List<int>() { 3, 5, 6, 7 };

var result = list1.Union(list2);

foreach (var num in result)
{
    Console.Write(num + " ");
}

📌 النتيجة: 1 2 3 4 5 6 7



✅ مثال باستخدام Query Syntax:


var result = (from n in list1
              select n).Union(list2);

foreach (var num in result)
{
    Console.Write(num + " ");
}


💡 خصائص مهمة:

  • تُزيل التكرارات: بعكس Concat() اللي بتضم الكل، حتى لو مكرر.
  • تحافظ على العناصر الفريدة فقط.
  • تستخدم Default Equality Comparer: يعني بتعتمد على المساواة العادية للنوع.
  • تدعم التنفيذ المؤجل (Deferred Execution).


🛠️ متى تستخدم Union؟

  • لما تحتاج دمج قائمتين **بدون تكرار**.
  • لما تجمع بيانات من مصدرين وعايز **تصفية التكرار تلقائيًا**.
  • لما تعمل تقارير بتحتاج تعرض **قائمة موحدة** من عناصر فريدة.


🆚 مقارنة سريعة مع Concat:

الخاصية Union Concat
التكرارات تُزيل التكرارات تُبقي التكرارات
الترتيب يحافظ على ترتيب أول ظهور يحافظ على ترتيب المصدرين
الأداء أبطأ قليلاً (لأنه بيبحث عن التكرار) أسرع (لا يتحقق من التكرار)


تعليقات

المشاركات الشائعة من هذه المدونة

C# - Arrays

Entity Framework - ما هو ORM؟ ونبذة عن Dapper وNHibernate

Entity Framework - مقدمة عن Entity Framework