C# Linq的Distinct()方法 – 返回序列中不同的元素

  • Post category:C#

C# Linq的Distinct()方法可以用于从集合中获取不同的元素,即去重操作。本文将详细介绍Distinct()的使用方法和示例,以帮助读者更好地理解该方法。

Distinct()方法的语法

Distinct()方法位于System.Linq命名空间下,其语法如下:

public static IEnumerable<TSource> Distinct<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);
public static IEnumerable<TSource> Distinct<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, System.Collections.Generic.IEqualityComparer<TSource> comparer);

第一个参数source是待去重的集合,第二个参数comparer是可选的,用于指定比较器。方法返回一个IEnumerable类型的序列。

Distinct()方法的使用

下面是Distinct()方法的使用示例:

using System.Linq;

//示例1:去重整型数组中的元素
int[] nums = {1, 2, 3, 1, 2, 3};
var distinctNums = nums.Distinct();
foreach(var num in distinctNums)
{
    Console.WriteLine(num);
}
//输出:1 2 3

//示例2:去重字符串列表中的元素
List<string> strs = new List<string> {"Hello","World","Hello"};
var distinctStrs = strs.Distinct();
foreach(var str in distinctStrs)
{
    Console.WriteLine(str);
}
//输出:Hello World

本例中,我们使用Distinct()方法从一个整型数组和一个字符串列表中获取了不同的元素。在示例1中,我们定义了一个整型数组nums,并使用Distinct()方法去重数组中的元素,最后输出了去重后的结果。在示例2中,我们定义了一个字符串列表strs,并使用Distinct()方法去重字符串列表中的元素,最后输出了去重后的结果。

Distinct()方法的注意事项

在使用Distinct()方法时需要注意以下几点:

  • Distinct()方法返回的是IEnumerable类型的序列,如果需要转换为其他类型,需要使用LINQ的转换操作(如ToList()、ToArray()等)。
  • Distinct()方法去重时依赖元素的Equals()方法,元素类型必须实现Equals()方法。
  • Distinct()方法不保证去重的元素顺序与原序列一致。

最后提醒,上述提到的语法、使用及注意事项仅为Distict方法的一小部分,更多内容请参考官方文档。

希望本文能够对读者理解C# Linq的Distinct()方法有所帮助。