C# list 分组去重返回 去重后的list
时间: 2024-01-17 19:17:40 AIGC 浏览: 164 评论: 3
以下是C#中对List进行分组去重并返回去重后的List的方法:
```csharp
List<int> listA = new List<int> { 1, 2, 3, 5, 7, 9 };
List<int> listB = new List<int> { 13, 4, 17, 29, 2 };
listA.AddRange(listB);
// 分组去重并返回去重后的List
List<int> Result = listA.GroupBy(x => x).Select(x => x.Key).ToList();
// 输出去重后的List
Result.ForEach(s => Console.WriteLine(s));
```
以上代码中,我们首先将两个List合并为一个List,然后使用GroupBy方法对List进行分组,再使用Select方法选择分组后的Key值,最后使用ToList方法将结果转换为List并返回。这样就可以得到去重后的List了。
相关问题
c# list集合去重
在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()`可能是最快的解决方案;对于复杂的比较,可能需要自定义比较或哈希表。
c#list数组去重
在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,而是返回新的去重后的列表。
阅读全文
相关推荐

















评论

叫我叔叔就行
2025.08.10
代码示例清晰展示如何合并、分组、选择Key值并生成去重后的List。💖

简甜XIU09161027
2025.06.27
适合初学者快速理解和应用C#中的LINQ操作。

贼仙呐
2025.03.14
提供了一个简洁有效的C#代码示例,用于解决List分组去重问题。