c#list数组去重
时间: 2025-01-03 09:10:57 浏览: 10
在C#中,List<T>本身并不是数组,而是.NET框架提供的动态集合类型,它可以自动管理内存并允许元素动态添加或删除。但是,当你想要从List<T>中去除重复项,有几种常见的方法:
1. **使用LINQ Distinct()**:
```csharp
List<int> numbers = new List<int>{1, 2, 2, 3, 4, 4};
List<int> distinctNumbers = numbers.Distinct().ToList();
```
这里,`Distinct()`方法会返回一个新的列表,其中包含原始列表中唯一(不重复)的元素。
2. **自定义比较去重**:
如果你想基于某个属性或者函数来判断是否重复,可以创建一个IEqualityComparer<T>实现,并配合OrderBy然后ToDictionary来去重:
```csharp
List<Person> people = ...; // 假设Person有一个Name属性
Dictionary<string, Person> dict = people.OrderBy(p => p.Name).ToDictionary(p => p.Name);
List<Person> distinctPeople = dict.Values.ToList();
```
3. **使用HashSet**:
HashSet是一个无序的不重复元素集,可以把List转换成HashSet,然后再转换回List:
```csharp
List<int> numbers = new List<int>{1, 2, 2, 3, 4, 4};
HashSet<int> uniqueNumbers = new HashSet<int>(numbers);
List<int> distinctNumbers = uniqueNumbers.ToList();
```
注意,以上方法都不会改变原List,而是返回新的去重后的列表。
阅读全文