English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
الجدول أدناه يعرض جميع عمليات مجموعة LINQ المتاحة.
عمليات المجموعات | طريقة الاستخدام |
---|---|
Distinct | تعود القيم غير المكررة في المجموعة. |
Except | تعود الفرق بين التسلسلين، مما يعني العناصر التي لا تظهر في التسلسل الثاني. |
Intersect | تعود الت交汇ة بين التسلسلين، وهي العناصر التي تظهر في كلا التسلسلين. |
Union | تعود العناصر الفريدة في كلا التسلسلين، مما يعني العناصر التي تظهر في كلا التسلسلين. |
طريقة توسيع Distinct تعود مجموعة جديدة تحتوي على العناصر الفريدة من مجموعة المقدمة.
IList<string> strList = new List<string>{ "One", "Two", "Three", "Two", "Three" }; IList<int> intList = new List<int>{ 1, 2, 3, 2, 4, 4, 3, 5 }; var distinctList1 = strList.Distinct(); foreach(var str in distinctList1) Console.WriteLine(str); var distinctList2 = intList.Distinct(); foreach(var i in distinctList2) Console.WriteLine(i);
واحد إثنان ثلاثة 1 2 3 4 5
لا يقارن طريقة توسيع Distinct بقيم الأشياء المعقدة. لتحديد قيم الأشياء المعقدة، يجب تنفيذ واجهة IEqualityComparer<T>. في المثال التالي، تقوم فئة StudentComparer بتنفيذ IEqualityComparer<Student> لتحديد Student<objects>.
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 الذي تم إنشاؤه أعلاه كمعامل إلى دالة Distinct()، مثلما يلي. مثال: مقارنة الأشياء في C#
IList<Student> studentList = 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 = 3, StudentName = "Bill", Age = 25 }, new Student() { StudentID = 3, StudentName = "Bill", Age = 25 }, new Student() { StudentID = 3, StudentName = "Bill", Age = 25 }, new Student() { StudentID = 5, StudentName = "Ron", Age = 19 } }; var distinctStudents = studentList.Distinct(new StudentComparer()); foreach(Student std in distinctStudents) Console.WriteLine(std.StudentName);
John Steve Bill Ron
لا يدعم جملة استعلام C# دالة Distinct. ولكن يمكنك استخدام دالة Distinct لاستعلام متغير أو تعبئة الجملة بالكامل في أقواس، ثم إدعام دالة Distinct().
استخدام كلمة دالة Distinct في جملة استعلام VB.Net:
Dim strList = New List(Of string) From {"One", "Three", "Two", "Two", "One"} Dim distinctStr = From s In strList _ Select s Distinct