📅  最后修改于: 2023-12-03 14:52:40.680000             🧑  作者: Mango
在 C# 中获取唯一列表有多种方法,本文将介绍其中常用的三种方法,并提供相应的代码示例。
使用 HashSet<T>
是获取唯一列表的一个简单方法。HashSet<T>
是一种集合类型,可以存储唯一元素。若添加了一个重复的元素,则会被自动忽略。
下面是一个使用 HashSet<T>
获取唯一列表的示例:
List<int> list = new List<int> { 1, 2, 3, 3, 4, 5, 6, 6 };
HashSet<int> set = new HashSet<int>(list);
List<int> uniqueList = new List<int>(set);
首先,我们使用 List<int>
创建了一个包含八个元素的列表,其中包含了两个重复的元素:3 和 6。我们接着使用 HashSet<int>
创建了一个唯一元素集合,并将列表添加到该集合中。最后,我们将该集合中的元素复制到一个新列表 uniqueList
中。
使用 LINQ 是获取唯一列表的另一个简便方法。LINQ 语言提供了大量的扩展方法,其中包括 Distinct()
方法,该方法可以移除,返回单独的项。
以下是一个使用 LINQ 获取唯一列表的示例:
List<int> list = new List<int> { 1, 2, 3, 3, 4, 5, 6, 6 };
List<int> uniqueList = list.Distinct().ToList();
这里,我们使用 List<int>
创建了一个包含八个元素的列表,其中包含了两个重复的元素:3 和 6。接着,我们调用了 Distinct()
扩展方法,并将返回的结果转换为 List<int>
。
最后,我们可以实现 IEqualityComparer<T>
接口,自定义两个对象是否相等。然后,我们可以使用 Distinct()
方法,并将比较器对象传入方法中,用于比较两个对象是否相等。
以下是一个自定义比较器,实现 IEqualityComparer<T>
接口:
public class MyComparer : IEqualityComparer<int>
{
public bool Equals(int x, int y)
{
return x == y;
}
public int GetHashCode(int obj)
{
return obj.GetHashCode();
}
}
接下来,我们可以使用自定义比较器获取唯一列表:
List<int> list = new List<int> { 1, 2, 3, 3, 4, 5, 6, 6 };
List<int> uniqueList = list.Distinct(new MyComparer()).ToList();
这里,我们使用 List<int>
创建了一个包含八个元素的列表,其中包含了两个重复的元素:3 和 6。接着,我们调用了 Distinct()
扩展方法,并将自定义比较器对象传入方法中。
以上就是在 C# 中获取唯一列表的三种常用方法。无论你选择哪种方法,在代码中使用 HashSet 或 LINQ,或者实现 IEqualityComparer