当我们需要在C#中从一个集合中筛选出不同的元素,Linq的Distinct()方法就非常适用了。在这里,我将为您提供C#Linq的Distinct()方法的完整攻略,包括定义、返回值、语法、使用方法和示例。
定义
Distinct()方法是Linq用于从集合中返回不同元素的方法之一。该方法基于对象的值,比较并取消重复出现的元素。不同于其他返回元素的方法,Distinct()方法可以确保不会返回重复出现的元素。
返回值
Distinct()方法返回一个IEnumerable
语法
Distinct()方法的语法如下:
public static IEnumerable<TSource> Distinct<TSource>(
this IEnumerable<TSource> source
);
从上面的语法可以看到,Distinct()方法是一个扩展方法,可以作用于任何IEnumerable
使用方法
下面是使用Distinct()方法获取集合中不同元素的基本方法:
// 创建一个整数数组
int[] numbers = { 1, 1, 2, 3, 4, 4, 4, 5 };
// 使用Distinct()方法获取不同元素
var distinctNumbers = numbers.Distinct();
// 输出结果
foreach (var number in distinctNumbers)
{
Console.WriteLine(number);
}
上面的代码将输出以下结果:
1
2
3
4
5
示例1
下面的示例展示了如何使用Distinct()方法从复杂类型的集合中获取不同元素。假设我们有一个Person类:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
我们将创建一个Person类的对象集合,使用Distinct()方法获取不同的人。注意:当使用Distinct()方法比较复杂类型时,必须进行自定义比较。
// 创建一个Person类对象集合
List<Person> persons = new List<Person>
{
new Person { Name = "John", Age = 20 },
new Person { Name = "John", Age = 20 },
new Person { Name = "Peter", Age = 25 },
new Person { Name = "Peter", Age = 25 },
new Person { Name = "Mary", Age = 30 }
};
// 使用Distinct()方法获取不同的人
var distinctPersons = persons.Distinct(new PersonEqualityComparer());
// 输出结果
foreach (var person in distinctPersons)
{
Console.WriteLine("{0}, {1}", person.Name, person.Age);
}
上面的代码将输出以下结果:
John, 20
Peter, 25
Mary, 30
其中PersonEqualityComparer类是自定义的一个比较器,用于比较两个Person类对象是否相同:
public class PersonEqualityComparer : 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();
}
}
示例2
下面的示例展示了如何使用Distinct()方法获取一个字符串集合中不同元素的数量。假设我们有一个字符串数组,包含多个重复的字符串,我们将使用Distinct()方法获取不同元素的数量。
// 创建一个字符串数组
string[] words = { "you", "can", "can", "you", "feel", "the", "love", "tonight" };
// 使用Distinct()方法获取不同元素数量
var distinctWordsCount = words.Distinct().Count();
// 输出结果
Console.WriteLine("The number of distinct words is {0}", distinctWordsCount);
上面的代码将输出以下结果:
The number of distinct words is 6
总结
上述就是C#Linq的Distinct()方法的完整攻略,包括定义、返回值、语法、使用方法和示例。 Distinct()方法是一个非常有用的Linq查询操作,可用于在集合中查找不同或无重复的元素。有时您可能需要比较集合中的元素,以便使用自定义比较器来去除重复元素,但是总体而言,Distinct()方法是一个非常有用的工具,可以提高代码编写的效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# Linq的Distinct()方法 – 返回序列中不同的元素 - Python技术站