c#中distinct的使用

  • Post category:other

C# 中 Distinct 的使用攻略

在 C# 中,Distinct 是一个常用的 LINQ 扩展方法,用于从集合中筛选出不同的元素。本攻略将介绍如何使用 C# 中的 Distinct 方法提供两个示例说明。

步骤一:导入命名空间

在使用 Distinct 方法之前,需要先导入 System.Linq 命名空间。

using System.Linq;

步骤二:使用 Distinct 方法

  1. 使用 Distinct 方法筛选不同的元素
List<int> numbers = new List<int> { 1, 2, 3, 2, 4, 5, 3 };
var distinctNumbers numbers.Distinct();
  1. 使用 Distinct 方法和自定义比较器筛选不同的元素
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public class PersonComparer : IEqualityComparer<Person>
{
    public bool Equals(Person x, Person y)
    {
        return x.Name == y.Name && x.Age == y.Age;
    }

    public int GetHashCode(Person obj)
    {
        return obj.Name.GetHashCode() ^ obj.Age.GetHashCode();
    }
}

List<Person> people = new List<Person>
{
    new Person { Name = "Alice", Age = 20 },
    new Person { Name = "Bob", Age = 30 },
    new Person { Name = "Alice", Age = 20 },
    new Person { Name = "Charlie", Age = 40 }
};

var distinctPeople = people.Distinct(new PersonComparer());

示例一:使用 Distinct 方法筛选不同元素

以下是一个使用 Distinct 方法筛选不同的元素的示例:

List<int> numbers = new List<int> { 1, 2, 3, 2, 4, 5, 3 };
var distinctNumbers = numbers.Distinct();

foreachvar number in distinctNumbers)
{
    Console.WriteLine(number);
}

该示例中,使用 Distinct 方法从一个整数列表中筛选出不同的元素,并使用 foreach 循环遍历输出。

示例二:使用 Distinct 方法和自定义比较器筛选不同的元素

以下是一个使用 Distinct 方法和自定义比较器筛选不同的元素的示例:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public class PersonComparer : IEqualityComparer<Person>
{
    public bool Equals(Person x, Person y)
    {
        return x.Name == y.Name && x.Age == y.Age;
    }

    public int GetHashCode(Person obj)
    {
        return obj.Name.GetHashCode() ^ obj.Age.GetHashCode();
    }
}

List<Person> people = new List<Person>
{
    new Person { Name = "Alice", Age = 20 },
    new Person { Name = "Bob", Age = 30 },
    new Person { Name = "Alice", Age = 20 },
    new Person { Name = "Charlie", Age = 40 }
};

var distinctPeople = people.Distinct(new PersonComparer());

foreach (var person in distinctPeople)
{
    Console.WriteLine(person.Name + " " + person.Age);
}

该示例中,使用 Distinct 方法和自定义比较器从一个 Person 对象列表中筛选出不同的元素,并使用 foreach 循环遍历输出。

结论

在 C# 中,Distinct 是一个常用的 LINQ 扩展方法,用于从集合中筛选出不同的元素。本攻略介绍了如何使用 C# 中的 Distinct 方法提供了两个示例说明。开发者可以根据自己的需求使用 Distinct 方法进行集合元素的筛选。