c#distinct(C#distinct用法)

## C# 中的 Distinct() 方法### 简介`Distinct()` 是 C# 中一个常用的方法,用于从一个集合中移除重复元素,并返回一个包含唯一元素的新集合。它属于 `System.Linq` 命名空间,因此在使用它之前需要添加 `using System.Linq;` 语句。### 使用方法`Distinct()` 方法有两种常用的使用方法:1.

直接调用 `Distinct()` 方法:

```csharpList numbers = new List() { 1, 2, 2, 3, 4, 4, 5 };List distinctNumbers = numbers.Distinct().ToList(); // { 1, 2, 3, 4, 5 }```2.

使用自定义比较器:

```csharpclass Person{public string Name { get; set; }public int Age { get; set; }}// 自定义比较器class PersonComparer : IEqualityComparer{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 people = new List(){new Person { Name = "John", Age = 30 },new Person { Name = "Jane", Age = 25 },new Person { Name = "John", Age = 30 } // 重复元素};List distinctPeople = people.Distinct(new PersonComparer()).ToList();```### 注意事项- `Distinct()` 方法返回的是一个新的集合,不会修改原集合。 - `Distinct()` 方法默认使用对象的 `GetHashCode()` 和 `Equals()` 方法进行比较。 - 如果需要自定义比较方式,需要实现 `IEqualityComparer` 接口。 - `Distinct()` 方法适用于任何实现了 `IEnumerable` 接口的集合类型。### 示例

1. 从列表中删除重复的数字:

```csharp List numbers = new List() { 1, 2, 2, 3, 4, 4, 5 }; List distinctNumbers = numbers.Distinct().ToList(); // distinctNumbers: { 1, 2, 3, 4, 5 } ```

2. 从字符串数组中删除重复的单词:

```csharp string[] words = { "hello", "world", "hello", "world", "again" }; string[] distinctWords = words.Distinct().ToArray(); // distinctWords: { "hello", "world", "again" } ```

3. 使用自定义比较器从 Person 对象列表中删除重复的记录:

```csharp List people = new List() {new Person { Name = "John", Age = 30 },new Person { Name = "Jane", Age = 25 },new Person { Name = "John", Age = 30 } };List distinctPeople = people.Distinct(new PersonComparer()).ToList(); // distinctPeople: { John, 30 }, { Jane, 25 } ```### 总结`Distinct()` 方法是 C# 中一个强大而便捷的工具,可以有效地从集合中移除重复元素,并返回一个包含唯一元素的新集合。理解它的使用方法和注意事项,可以帮助你更好地处理数据并提高代码效率。

C

中的 Distinct() 方法

简介`Distinct()` 是 C

中一个常用的方法,用于从一个集合中移除重复元素,并返回一个包含唯一元素的新集合。它属于 `System.Linq` 命名空间,因此在使用它之前需要添加 `using System.Linq;` 语句。

使用方法`Distinct()` 方法有两种常用的使用方法:1. **直接调用 `Distinct()` 方法:**```csharpList numbers = new List() { 1, 2, 2, 3, 4, 4, 5 };List distinctNumbers = numbers.Distinct().ToList(); // { 1, 2, 3, 4, 5 }```2. **使用自定义比较器:**```csharpclass Person{public string Name { get; set; }public int Age { get; set; }}// 自定义比较器class PersonComparer : IEqualityComparer{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 people = new List(){new Person { Name = "John", Age = 30 },new Person { Name = "Jane", Age = 25 },new Person { Name = "John", Age = 30 } // 重复元素};List distinctPeople = people.Distinct(new PersonComparer()).ToList();```

注意事项- `Distinct()` 方法返回的是一个新的集合,不会修改原集合。 - `Distinct()` 方法默认使用对象的 `GetHashCode()` 和 `Equals()` 方法进行比较。 - 如果需要自定义比较方式,需要实现 `IEqualityComparer` 接口。 - `Distinct()` 方法适用于任何实现了 `IEnumerable` 接口的集合类型。

示例**1. 从列表中删除重复的数字:** ```csharp List numbers = new List() { 1, 2, 2, 3, 4, 4, 5 }; List distinctNumbers = numbers.Distinct().ToList(); // distinctNumbers: { 1, 2, 3, 4, 5 } ```**2. 从字符串数组中删除重复的单词:** ```csharp string[] words = { "hello", "world", "hello", "world", "again" }; string[] distinctWords = words.Distinct().ToArray(); // distinctWords: { "hello", "world", "again" } ```**3. 使用自定义比较器从 Person 对象列表中删除重复的记录:** ```csharp List people = new List() {new Person { Name = "John", Age = 30 },new Person { Name = "Jane", Age = 25 },new Person { Name = "John", Age = 30 } };List distinctPeople = people.Distinct(new PersonComparer()).ToList(); // distinctPeople: { John, 30 }, { Jane, 25 } ```

总结`Distinct()` 方法是 C

中一个强大而便捷的工具,可以有效地从集合中移除重复元素,并返回一个包含唯一元素的新集合。理解它的使用方法和注意事项,可以帮助你更好地处理数据并提高代码效率。

Powered By Z-BlogPHP 1.7.2

备案号:蜀ICP备2023005218号