在C#中,Enumerable.Except 方法是一个 LINQ(Language Integrated Query)扩展方法,用于返回两个序列的差集。换句话说,它会返回第一个序列中存在但第二个序列中不存在的元素集合。此方法对于从一个集合中移除另一个集合中的所有匹配项非常有用。
Enumerable.Except 方法有两个主要重载版本:
- 默认比较器:使用默认相等比较器 (
Default Equality Comparer) 来确定两个元素是否相等。 - 自定义比较器:允许指定一个
IEqualityComparer<T>实现来自定义元素之间的相等性比较。
语法
使用默认比较器的语法如下:
public static IEnumerable<TSource> Except<TSource>(
this IEnumerable<TSource> first,
IEnumerable<TSource> second
)
使用自定义比较器的语法如下:
public static IEnumerable<TSource> Except<TSource>(
this IEnumerable<TSource> first,
IEnumerable<TSource> second,
IEqualityComparer<TSource> comparer
)
参数
first:要从中移除second中元素的序列。second:其元素将从first中移除的序列。comparer:(可选)用于比较元素的IEqualityComparer<TSource>实现。如果为null,则使用默认相等比较器。
返回值
一个 IEnumerable<TSource> 序列,包含 first 中存在但 second 中不存在的元素。
示例
以下是一个使用 Enumerable.Except 方法的简单示例:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<int> list1 = new List<int> { 1, 2, 3, 4, 5 };
List<int> list2 = new List<int> { 4, 5, 6, 7, 8 };
IEnumerable<int> difference = list1.Except(list2);
foreach (int number in difference)
{
Console.WriteLine(number);
}
// 输出: 1, 2, 3
}
}
在这个示例中,list1 和 list2 是两个整数列表。list1.Except(list2) 返回一个序列,包含 list1 中存在但 list2 中不存在的元素(即 1, 2, 3)。
Enumerable.Except 方法非常适用于需要从数据集中移除特定项的场景,例如,过滤掉用户已经拥有的商品列表中的商品,或者从员工列表中移除已经离职的员工等。

8827

被折叠的 条评论
为什么被折叠?



