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`،