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

基于LINQ双From子句,如何单行实现两数组元素两两相乘?

用LINQ实现两数组元素两两相乘的单行写法

嘿,刚接触LINQ的时候确实容易摸不清这些语法,完全懂你的感受!其实你要找的就是LINQ里的双from子句,它正好对应嵌套循环的逻辑,能极简实现你要的效果。

具体实现

假设我们有两个数组:

int[] arr1 = { 2, 4, 6 };
int[] arr2 = { 3, 5, 7 };

查询表达式写法(最直观,对应嵌套循环)

这是最接近你嵌套for循环思路的LINQ写法,本质就是做笛卡尔积:

var products = from num1 in arr1
              from num2 in arr2
              select num1 * num2;

方法链写法(链式调用风格)

如果你更喜欢LINQ的链式调用语法,用SelectMany也能实现完全等效的效果——SelectMany会把每个元素展开成一个序列,然后合并所有结果:

var products = arr1.SelectMany(num1 => arr2.Select(num2 => num1 * num2));

为什么这能替代嵌套循环?

你之前的嵌套for循环逻辑是:遍历第一个数组的每个元素 → 对每个元素遍历第二个数组的所有元素 → 计算乘积。而LINQ的双from子句就是把这个逻辑用声明式语法表达出来,底层执行逻辑和嵌套循环完全一致,只是写法更简洁。

对应的嵌套循环代码参考:

List<int> products = new List<int>();
foreach (int num1 in arr1)
{
    foreach (int num2 in arr2)
    {
        products.Add(num1 * num2);
    }
}

额外小技巧

如果需要直接得到数组结果,只需要在LINQ语句后面加ToArray()即可:

var productArray = (from num1 in arr1
                    from num2 in arr2
                    select num1 * num2).ToArray();

内容的提问来源于stack exchange,提问作者Sean Ervinson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:35:11