C# Linq的Zip()方法 – 将两个序列中的对应元素组合成一个新的序列

  • Post category:C#

C# Linq 中的 Zip() 方法可以将两个集合按照相同的下标位置进行合并,返回一个新的集合。它的基本语法如下:

IEnumerable<TResult> Zip(IEnumerable<TFirst> first, IEnumerable<TSecond> second, Func<TFirst, TSecond, TResult> resultSelector)

其中,第一个参数和第二个参数是需要进行合并的两个集合,第三个参数是用来处理两个集合中相同下标位置的元素的委托函数。返回值是一个新的集合,类型为 TResult。

下面是两个使用Zip()方法的示例:

示例一

int[] numbers = { 1, 2, 3 };
string[] words = { "one", "two", "three" };
var results = numbers.Zip(words, (n, w) => n.ToString() + ": " + w);
foreach (var result in results)
{
    Console.WriteLine(result);
}

结果输出:

1: one
2: two
3: three

这个示例中,我们将一个整数数组和一个字符串数组进行了合并,将每个整数和相同下标位置上的字符串拼接起来,返回了一个新的字符串数组。可以看到,结果输出的每个元素都是将整数和相应的字符串拼接起来的字符串。

示例二

int[] numbers1 = { 1, 2, 3 };
int[] numbers2 = { 4, 5, 6 };
var results = numbers1.Zip(numbers2, (n1, n2) => n1 + n2);
foreach (var result in results)
{
    Console.WriteLine(result);
}

结果输出:

5
7
9

这个示例中,我们将两个整数数组进行了合并,将每个位置上的整数相加,返回一个新的整数数组。可以看到,结果输出的每个元素都是两个相应位置上整数的和。

除了上面两个示例,还有许多不同的方式可以使用Zip()方法,它可以帮助我们在集合处理过程中更加方便地进行操作。