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()` 方法按引用比较对象,而不是按属性。我尝试重写 `Equals` 和 `GetHashCode`,