c# list集合去重
时间: 2024-08-26 11:01:03 浏览: 79
在C#中,如果你有一个`List<T>`集合并希望去除其中的重复元素,可以采用多种方法。以下是几种常见的去重技巧:
1. **LINQ** (Language Integrated Query) - 使用`.Distinct()`方法:
```csharp
List<T> uniqueItems = originalList.Distinct().ToList();
```
2. **自定义比较** - 如果T实现了`IEquatable<T>`接口或重写了`Equals`和`GetHashCode`方法,可以利用这两个方法来去重:
```csharp
var distinctList = originalList.GroupBy(item => item)
.Select(group => group.First())
.ToList();
```
3. **HashSet** - 利用HashSet的特性自动去重:
```csharp
HashSet<T> hashSet = new HashSet<T>(originalList);
List<T> uniqueList = hashSet.ToList();
```
4. **foreach 循环** - 直接遍历原始列表并将未见过的元素添加到新列表中:
```csharp
List<T> uniqueList = new List<T>();
foreach(T item in originalList)
{
if(!uniqueList.Contains(item))
{
uniqueList.Add(item);
}
}
```
请注意,上述方法取决于你的数据结构和需求。如果只是简单地查找唯一元素,`Distinct()`可能是最快的解决方案;对于复杂的比较,可能需要自定义比较或哈希表。
阅读全文