Avatar ·

LINQ Distinct() حسب خاصية معينة للكائن

مرحبًا أيها الزملاء! أنا جديد في C# و LINQ، وقد واجهت المشكلة التالية. لدي قائمة من الكائنات من الفئة `Product`: ```csharp public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } } ``` أقوم بتعبئة القائمة بالبيانات، وقد تحتوي على تكرارات حسب الحقل `Name`. على سبيل المثال: ```csharp var products = new List { new Product { Id = 1, Name = "Apple", Price = 100 }, new Product { Id = 2, Name = "Banana", Price = 50 }, new Product { Id = 3, Name = "Apple", Price = 120 }, new Product { Id = 4, Name = "Cherry", Price = 200 } }; ``` أريد الحصول على قائمة بالمنتجات الفريدة فقط حسب الخاصية `Name`، بحيث تبقى مثلًا "Apple" و "Banana" و "Cherry" فقط (لا يهم أي من التكرارات لـ Apple يبقى — الأول أو الأخير). طريقة `Distinct()` الافتراضية تقارن الكائنات حسب المرجع (reference)، وليس حسب الخاصية. لقد جربت إعادة تعريف `Equals` و `GetHashCode`،