Avatar ·

كيفية استخدام Distinct() مع تعبير لامدا لتصفية التكرارات بناءً على خاصية الكائن؟

مرحباً بالجميع! أنا مبتدئ في لغة C# وواجهت مشكلة أثناء العمل مع المجموعات. لدي قائمة من كائنات الفئة Person:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

أقوم بتعبئة القائمة بالبيانات، وتظهر فيها تكرارات بناءً على الحقل Name. أحتاج إلى الحصول على الأسماء الفريدة فقط، ولكن مع الاحتفاظ بالكائنات كاملة (أو على الأقل اختيار واحد من التكرارات).

أعرف أن هناك طريقة Distinct()، لكنها تعمل فقط مع الأنواع البدائية أو إذا تم تجاوز Equals و GetHashCode في الفئة. وأنا لا أريد تغيير الفئة Person — فهي تُستخدم في أماكن أخرى، والمقارنة بجميع الحقول لا تناسبني.

رأيت أن في LINQ هناك تحميل زائد Distinct(IEqualityComparer)، لكن كتابة فئة مقارن منفصلة لكل حالة تبدو مرهقة للغاية. هل يمكن استخدام لامدا؟