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

عامل الجمعيات LINQ Intersect

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

مثال: في بناء الجملة في C# Intersect
IList<string> strList1 = new List<string>() { "واحد", "اثنان", "ثلاثة", "أربعة", "خمس" };
IList<string> strList2 = new List<string>() { "أربعة", "خمس", "ستة", "سبعة", "ثمانية"};
var result = strList1.Intersect(strList2);
foreach (string str in result)
        Console.WriteLine(str);
الناتج:
أربعة
خمس

لا يرجع إلى النتائج الصحيحة للجمعيات المعقدة. من أجل الحصول على النتائج الصحيحة من طريقة Intersect، يجب تحقيق واجهة IEqualityComparer.

لتحقيق واجهة IEqualityComparer لـ Student كما هو موضح أدناه:

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 للحصول على النتيجة الصحيحة:

مثال: عمليات التداخل في 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.Intersect(studentList2, new StudentComparer()); 
foreach(Student std in resultedCol)
    Console.WriteLine(std.StudentName);
الناتج:
بيل
رون