list 去重 C#
时间: 2023-09-23 14:10:21 浏览: 95
在C#中,有多种方法可以对列表进行去重操作。根据你提供的引用内容,我将为你介绍三种常见的方法:
方法一:使用扩展方法
你可以使用扩展方法 `MyDistinct`,该方法通过指定一个委托,对列表进行自定义去重。例如,你可以根据 `Id` 和 `Name` 进行去重操作。下面是一个示例代码:
```csharp
list.MyDistinct(s => new { s.Id, s.Name }).ToList();
```
其中,`s => new { s.Id, s.Name }` 是一个委托,用于指定去重的条件。
方法二:使用 `Distinct` 方法
你可以直接使用 `Distinct` 方法对值类型元素集合进行去重操作。例如,对于一个整数类型的列表 `list`,你可以使用以下代码:
```csharp
list.Distinct().ToList().ForEach(s => Console.WriteLine(s));
```
这将输出去重后的列表元素。
方法三:自定义比较器
你还可以使用自定义的比较器来进行列表的去重操作。首先,你需要创建一个实现了 `IEqualityComparer<T>` 接口的比较器类。例如,以下是一个比较器类 `Compare` 的示例代码:
```csharp
public class Compare : IEqualityComparer<T>
{
public bool Equals(T x, T y)
{
// 自定义比较逻辑,判断 x 和 y 是否相等
}
public int GetHashCode(T obj)
{
// 自定义生成哈希码的逻辑
}
}
```
然后,你可以使用 `Distinct` 方法并传入自定义的比较器来进行去重。例如:
```csharp
list.Distinct(new Compare()).ToList().ForEach(s => Console.WriteLine(s.ToString()));
```
这将根据自定义的比较器进行去重操作,并输出去重后的列表元素。
综上所述,这是三种在C#中对列表进行去重的常见方法。你可以根据具体的需求选择其中的一种方法来使用。
阅读全文