You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确使用C# LINQ的Zip<TFirst,TSecond>方法简化双列表遍历?

C# 遍历两个等长列表简化Zip写法的解决方案

适配.NET 6及以上版本

.NET 6 已经新增了无结果选择器参数的Zip重载,默认返回包含两个对应元素的值元组,直接省略冗余lambda即可:

var numbers = new List<int> { 1, 2, 3 };
var words = new List<string> { "one", "two", "three" };
foreach (var (number, word) in numbers.Zip(words))
{
    // 执行对应操作
}

如果你想用你最初写的静态调用格式Zip(numbers, words),需要额外引入静态引用:

using static System.Linq.Enumerable;

适配.NET 5及更低版本

低版本框架没有对应重载的情况下,可以自行封装通用扩展方法,后续无需重复写lambda:

  1. 先定义扩展方法类
public static class EnumerableExtensions
{
    public static IEnumerable<(TFirst First, TSecond Second)> Zip<TFirst, TSecond>(
        this IEnumerable<TFirst> first, 
        IEnumerable<TSecond> second)
    {
        return first.Zip(second, (item1, item2) => (item1, item2));
    }
}
  1. 后续使用时和.NET 6+写法完全一致
foreach (var (number, word) in numbers.Zip(words))
{
    // 执行对应操作
}

注意事项

Zip方法默认会取两个序列中更短的长度作为遍历上限,如果你确认两个列表长度完全一致,不会有数据截断问题。

内容的提问来源于stack exchange,提问作者MK Span

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:39:03