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

如何用C#和Linq筛选任意数量列表中的共同产品ID?

问题

在ASP.NET MVC应用中,需根据用户选择的产品规格进行筛选。用户选择的参数如下:

manufacturer: [apple, sony, samsung]
ram: [8, 128, 256]
size: [12, 13.5]

基于该选择得到多组产品ID列表:

list1={10,12,18,100}
list2={10,18,20,21,100,102}
list3={1,2,9,10,12,18,100}

期望结果为所有列表的共同ID:

result={10,18,100}

由于可能存在超过3个列表的情况,是否有支持任意数量列表的Linq命令?

解决方案

可以使用Linq的Aggregate方法结合Intersect来实现任意数量列表的交集计算,这是处理多列表交集最简洁的方式。

代码示例

假设我们有一个包含所有产品ID列表的集合:

var productIdLists = new List<List<int>>
{
    new List<int> {10,12,18,100},
    new List<int> {10,18,20,21,100,102},
    new List<int> {1,2,9,10,12,18,100}
    // 可继续添加更多列表
};

// 计算所有列表的共同ID
var commonIds = productIdLists.Aggregate((currentIntersection, nextList) => 
    currentIntersection.Intersect(nextList).ToList());

原理说明

  • Aggregate会以集合中的第一个列表作为初始交集结果,然后依次将当前结果与下一个列表执行Intersect(求交集)操作,最终得到所有列表的共同元素。
  • 即使后续添加更多的产品ID列表,这段代码也不需要修改,完全支持任意数量的列表输入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:10:28