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