什么是C#,什么是C# Linq Distinct,什么是C# Linq Distinct with Examples
![]()
目录
LINQ查询运算符是一系列构成查询模式的延续性方法。这些函数是IEnumerable和IQueryable的扩展方法,它们被定义在System.Linq.Queryable和System.Linq.Enumerable预定义库中。
它们构成了LINQ查询表达式的构建块,并通过使用静态方法语法或实例方法语法来调用。
在LINQ中大约有50个标准的查询操作符,包括集合操作、连接、排序操作符、过滤操作符、元素操作符、聚合等等。集合操作包括四种方法。Distinct, Except, Intersect, and Union.
什么是C#中的LINQ Distinct方法?
C#Linq Distinct()方法从一个序列(列表)中移除重复的元素,并从一个数据源返回不同的元素。它属于LINQ查询运算符中的Set运算符类别,该方法的工作方式与结构化查询语言(SQL)中的DISTINCT指令相同。
C#中Linq Distinct方法的语法:
IEnumerable<data type> result = numbers.Distinct()
下面是一个示例代码,显示了C# LINQ Distinct()的实现:
using System;
using System.Linq;
using System.Collections.Generic;
Ctutorials
{
class Linqprograms
{
static void Main(string\[ \] args)
{
String\[ \] fruits = { "Apple", "Banana", "Apple", "Plum", "Grapes", "Plum" };
IEnumerable<string> result= fruits.Distinct(); //LINQ distinct函数
foreach (var item in result)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}
输出
APPLE
Banana
Plum
Grapes
解释
该数组读取了多个字符串,LINQ区别对待,删除了列表中的重复元素。
同时使用方法和查询语法的LINQ Distinct方法的例子
下面是一个使用C# LINQ Distinct Method同时使用Method和Query语法来读取学生分数的示例代码。
using System.Collections.Generic
using System.Collections.Generic;
using System.Linq;
LINQCode
{
class GradeMarks
{
static void Main(string\[\] args)
{
List<int> intCollection = new List<int>()
{
90,67,78,89,98,89,90,87,78,82,90,78
};
//方法的语法
var Marks = intCollection.Distinct();
//查询语法
var Grades = (from num in intCollection select num).Distinct();
foreach (var item in Marks)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}
}
输出
90
67
78
89
98
87
82
如何实现IEqualityComparer?
默认情况下,C#中的LINQ distinct()是区分大小写的。因此,默认的平等比较器可能对数字很有效,但在字符串中你可能无法得到准确的不同列表。
为了解决这个问题,我们使用IEqualityComparer。
语法:
StringComparer:IComparer, IEqualityComparer, IComparer <string>
如果我们改变我们讨论的第一个水果程序的情况呢?这样做会显示整个列表,因为C#的LINQ区分功能是大小写敏感的。让我们看看如何通过使用IEqualityComparer来使其发挥作用。
using System;
using System.Linq;
using System.Collections.Generic;
Ctutorials
{
class Linqprograms
{
static void Main(string\[\] args)
{
string\[\] fruits = { "Apple", "Banana", "apple", "Plum", "Grapes", "Plum" };
//使用IEqualityComparer
IEnumerable<string> result= fruits.Distinct(StringComparer.OrdinalIgnoreCase)。
foreach (var item in result)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}
输出
APPLE
Banana
Plum
Grapes