📜  如何在c#中获取唯一列表(1)

📅  最后修改于: 2023-12-03 14:52:40.680000             🧑  作者: Mango

如何在 C# 中获取唯一列表

在 C# 中获取唯一列表有多种方法,本文将介绍其中常用的三种方法,并提供相应的代码示例。

方法一:使用 with HashSet

使用 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 是获取唯一列表的另一个简便方法。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

最后,我们可以实现 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,都可以很容易地创建唯一列表。