English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

ميزات تحديد المجموعات LINQ Union

تحتاج الطريقة الموسعة Union إلى مجموعتين وتقوم بتحقيق مجموعة جديدة تحتوي على العناصر المختلفة من كلا المجموعتين. انظر إلى المثال التالي.

IList<string> strList1 = new List<string>() { "One", "Two", "three", "Four" };
IList<string> strList2 = new List<string>() { "Two", "THREE", "Four", "Five" };
var result = strList1.Union(strList2);
foreach (string str in result)
        Console.WriteLine(str);
الإخراج:
واحد
اثنين
ثلاثة
ثلاثة
أربعة
خمسة

لا يمكن للطريقة الموسعة Union تقديم النتيجة الصحيحة للعناصر المعقدة. تحتاج إلى تحقيق واجهة IEqualityComparer للحصول على النتيجة الصحيحة من الطريقة Union.

قم بتحقيق واجهة IEqualityComparer لفئة Student كما يلي:

مثال: استخدم عمودية IEqualityComparer:
public class Student 
{
    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public int Age { get; set; }
}
class StudentComparer : IEqualityComparer<Student>
{
    public bool Equals(Student x, Student y)
    {
        if (x.StudentID == y.StudentID && x.StudentName.ToLower() == y.StudentName.ToLower())
            return true;
        return false;
    }
    public int GetHashCode(Student obj)
    {
        return obj.StudentID.GetHashCode();
    }
}

الآن، يمكنك تقديم كلاً من فئة StudentComparer المذكورة أعلاه في طريقة Union لتحقيق النتيجة الصحيحة:

مثال: عمليات الاتحاد - C#

IList<Student> studentList1 = new List<Student>() { 
        new Student() { StudentID = 1, StudentName = "John", Age = 18 } ,
        new Student() { StudentID = 2, StudentName = "Steve", Age = 15 } ,
        new Student() { StudentID = 3, StudentName = "Bill", Age = 25 } ,
        new Student() { StudentID = 5, StudentName = "Ron", Age = 19 } 
    };
IList<Student> studentList2 = new List<Student>() { 
        new Student() { StudentID = 3, StudentName = "Bill", Age = 25 } ,
        new Student() { StudentID = 5, StudentName = "Ron", Age = 19 } 
    };
var resultedCol = studentList1.Union(studentList2, new StudentComparer()); 
foreach(Student std in resultedCol)
    Console.WriteLine(std.StudentName);
الإخراج:
John
Steve
Bill
Ron

جملة استعلام

جملة استعلام C # & VB.Net لا تدعم عمليات الاتحاد. ولكن، يمكنك استخدام طريقة Union للمتغيرات الاستعلامية، أو تعبئة الاستعلام برمته في أقواس مزدوجة، ثم استدعاء Union().