什么是C#?C# Linq Distinct、C# Linq Distinct 介绍(附实例)

474 阅读2分钟

什么是C#,什么是C# Linq Distinct,什么是C# Linq Distinct with Examples

C# LINQ Distinct

目录

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