📜  LINQ |设置运算符|相交(1)

📅  最后修改于: 2023-12-03 15:02:41.523000             🧑  作者: Mango

LINQ | 设置运算符 | 相交

相交操作在LINQ中是一种常见的运算符,它可以帮助我们在两个集合中查找共有的元素。本文将介绍使用LINQ进行相交操作的方法及示例。

方法一:Intersect

Intersect是一个LINQ运算符,用于查找两个集合中共有的元素。它的语法如下:

IEnumerable<TSource> Intersect<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second)
  • first:第一个集合。
  • second:第二个集合。

Intersect方法返回一个包含两个集合中共有元素的集合。下面的代码示例演示如何在两个数组中找到共有的元素。

int[] numbers1 = { 1, 2, 3, 4, 5 };
int[] numbers2 = { 2, 4, 6, 8 };

IEnumerable<int> result = numbers1.Intersect(numbers2);

foreach (var number in result)
{
    Console.WriteLine(number); // Output: 2 4
}
方法二:Join

除了Intersect运算符之外,我们还可以使用Join运算符进行相交操作。Join方法将两个集合中的元素进行匹配,返回一个新的集合。Join方法的语法如下:

IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(this IEnumerable<TOuter> outer, IEnumerable<TInner> inner, Func<TOuter, TKey> outerKeySelector, Func<TInner, TKey> innerKeySelector, Func<TOuter, TInner, TResult> resultSelector);
  • outer:第一个集合。
  • inner:第二个集合。
  • outerKeySelector:用于选择第一个集合中的关键字的函数。
  • innerKeySelector:用于选择第二个集合中的关键字的函数。
  • resultSelector:用于合并两个元素的函数。

Join方法返回一个新的集合,其中包含两个集合中相交的元素。下面的代码示例演示如何在两个数组中找到共有的元素。

int[] numbers1 = { 1, 2, 3, 4, 5 };
int[] numbers2 = { 2, 4, 6, 8 };

var result = numbers1.Join(
    numbers2,
    n1 => n1,
    n2 => n2,
    (n1, n2) => n1
);

foreach (var number in result)
{
    Console.WriteLine(number); // Output: 2 4
}
总结

Intersect和Join是在LINQ中进行相交操作的两种常见运算符。它们分别提供了不同的语法和实现方式,开发者可以根据具体场景选择适合的方法进行相交操作。