LINQ基础之Intersect、Except和Distinct子句

1. Intersect子句

1.1 概述

Intersect(交集)是LINQ查询语句中的一个关键字,它用于在两个结果序列中找到共同存在的元素。使用Intersect子句,可以方便地对两个序列进行比较,并返回它们的共同元素。

1.2 语法

var result = sequence1.Intersect(sequence2);

sequence1和sequence2是两个要比较的序列,result是一个包含两个序列共同元素的结果序列。

1.3 示例

假设有两个包含整数的序列:sequence1 = {1, 2, 3, 4, 5}和sequence2 = {4, 5, 6, 7, 8}。我们想要找到这两个序列中共同存在的元素。可以使用Intersect子句来实现:

var result = sequence1.Intersect(sequence2);

foreach (var item in result)

{

Console.WriteLine(item);

}

运行以上代码,将会输出结果:4, 5。这是因为4和5是sequence1和sequence2中共同存在的元素。

2. Except子句

2.1 概述

Except(差集)是LINQ查询语句中的一个关键字,它用于在一个序列中排除另一个序列中存在的元素。使用Except子句,可以轻松地从一个序列中删除另一个序列中的重复元素。

2.2 语法

var result = sequence1.Except(sequence2);

sequence1是要从中排除元素的序列,sequence2是要排除的元素所在的序列。result是一个包含仅在sequence1中出现的元素的结果序列。

2.3 示例

假设有两个包含整数的序列:sequence1 = {1, 2, 3, 4, 5}和sequence2 = {4, 5, 6, 7, 8}。我们想要从sequence1中排除在sequence2中出现的元素。可以使用Except子句来实现:

var result = sequence1.Except(sequence2);

foreach (var item in result)

{

Console.WriteLine(item);

}

运行以上代码,将会输出结果:1, 2, 3。这是因为1、2和3是只在sequence1中出现的元素。

3. Distinct子句

3.1 概述

Distinct(去重)是LINQ查询语句中的一个关键字,它用于从序列中排除重复的元素。使用Distinct子句,可以方便地去除重复的数据。

3.2 语法

var result = sequence.Distinct();

sequence是要去重的序列,result是一个包含sequence中不重复元素的结果序列。

3.3 示例

假设有一个包含整数的序列:sequence = {1, 2, 2, 3, 4, 4, 5}。我们想要去除sequence中重复的元素。可以使用Distinct子句来实现:

var result = sequence.Distinct();

foreach (var item in result)

{

Console.WriteLine(item);

}

运行以上代码,将会输出结果:1, 2, 3, 4, 5。这是因为去除了sequence中重复的元素。

总结

Intersect、Except和Distinct是LINQ查询语句中常用的子句,它们分别用于求两个序列的交集、差集和去重操作。使用这些子句,可以方便地对数据进行比较和处理,提高代码的可读性和简洁性。

后端开发标签