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

C# LINQ的Zip函数对应的查询表达式等效写法是什么

问题原因

你写的双重from子句属于LINQ的复合查询,默认就是生成两个序列的笛卡尔积,也就是所有元素的两两组合,和你要的按位置配对逻辑完全不符,出现这个结果是正常行为。

实现方案

LINQ查询表达式本身没有直接对应Zip方法的语法糖,要实现相同的按位置匹配效果,需要先给两个序列的元素都绑定自身的索引,再按索引等值关联即可,示例代码如下:

var res = from e1WithIndex in lines1.Select((e1, idx) => new { e1, idx })
          where !string.IsNullOrWhiteSpace(e1WithIndex.e1)
          join e2WithIndex in lines2.Select((e2, idx) => new { e2, idx })
          on e1WithIndex.idx equals e2WithIndex.idx
          where !string.IsNullOrWhiteSpace(e2WithIndex.e2)
          select $"{e1WithIndex.e1} {e2WithIndex.e2}";

注意事项

这个写法的行为和内置Zip方法完全一致:如果两个输入序列长度不同,最终结果的长度取两个序列的较小值,超出长度的元素会被自动忽略。


内容的提问来源于stack exchange,提问作者Jan Bodnar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:30:03