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

如何在C#中按顺序将两个等长列表的对应元素相乘?

对应元素相乘的实现方案

你可以利用C# LINQ中的Zip方法来完成两个列表对应位置元素的配对相乘,该方法会将两个序列中索引相同的元素进行组合,完全匹配你的需求。

代码实现

假设你的实体类定义大致如下:

// tests表对应的实体
public class TestEntity
{
    public int Id { get; set; }
    public decimal FirstYear { get; set; }
    public decimal SecondYear { get; set; }
    public decimal ThirdYear { get; set; }
}

// tests2表对应的实体
public class Test2Entity
{
    public int Id { get; set; }
    public decimal Price { get; set; }
}

根据你的需求,将test中每个元素的年份属性依次与test2中对应位置的Price相乘,可以这样写:

var test = _db.tests.Where(x => x.Id == id).ToList();
var test2 = _db.tests2.Where(y => y.Id == id).ToList();

// 提取test中所有年份值为一个扁平序列
var yearValues = test.SelectMany(t => new[] { t.FirstYear, t.SecondYear, t.ThirdYear });
// 提取test2中所有Price值
var priceValues = test2.Select(t2 => t2.Price);

// 对应位置相乘,得到结果列表
var result = yearValues.Zip(priceValues, (year, price) => year * price).ToList();

说明

  • SelectMany用于将每个TestEntity中的三个年份属性展开为单个数值序列,确保年份值的顺序与test2中Price的顺序一一对应。
  • Zip方法会遍历两个序列,将相同索引位置的year和price传入委托进行相乘操作,最终返回包含所有乘积的新列表。
  • 由于你明确两个列表长度一致,不需要额外处理长度不匹配的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 13:17:37