c#列表list根据code去重
时间: 2024-09-12 12:09:20 浏览: 17
在C#中,如果你有一个`List<int>`或者更一般的`List<T>`类型的集合,并想要去除其中的重复元素(基于某个属性,比如`int code`),可以使用`Distinct()`方法配合`IEqualityComparer<T>`。这里是一个简单的例子:
```csharp
List<int> codes = new List<int>() { 1, 2, 2, 3, 4, 4, 5 };
codes = codes.Distinct(new List<int>.DistinctEqualityComparer()).ToList();
```
在这个示例中,我们创建了一个新的`DistinctEqualityComparer`实例,它会忽略值相等的对象,因此重复的`code`值会被自动去重。
如果你想基于自定义的比较规则,例如`code`字段,你可以创建一个实现了`IEqualityComparer<int>`的类,然后传给`Distinct()`方法:
```csharp
public class CodeEqualityComparer : IEqualityComparer<int>
{
public bool Equals(int x, int y)
{
// 根据code属性的实际情况进行比较
return x == y;
}
public int GetHashCode(int obj)
{
return obj.GetHashCode();
}
}
// 使用去重类
List<int> codes = ...;
codes = codes.Distinct(new CodeEqualityComparer()).ToList();
```