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

如何使用LINQ从List<List<Items>>中获取匹配的List<Items>集合

实现方案

场景1:遍历所有db2Data和apiData的匹配对执行业务逻辑

推荐用LINQ的Join方法实现,性能比嵌套循环更高,匹配逻辑清晰:

查询语法写法

// 生成所有匹配的<db2列表, api列表>对
var matchedPairs = from db2ItemList in db2Data
                   join apiItemList in apiData 
                   on new { FirstKey = db2ItemList[0].Value, TwentyEighthKey = db2ItemList[27].Value }
                   equals new { FirstKey = apiItemList[0].Value, TwentyEighthKey = apiItemList[27].Value }
                   select new { Db2Items = db2ItemList, ApiItems = apiItemList };

// 遍历匹配结果执行业务逻辑
foreach (var pair in matchedPairs)
{
    // 此处写你的业务逻辑,pair.Db2Items是匹配的db2端列表,pair.ApiItems是匹配的api端列表
}

方法语法写法

var matchedPairs = db2Data.Join(
    apiData,
    db2List => new { FirstKey = db2List[0].Value, TwentyEighthKey = db2List[27].Value },
    apiList => new { FirstKey = apiList[0].Value, TwentyEighthKey = apiList[27].Value },
    (db2List, apiList) => new { Db2Items = db2List, ApiItems = apiList }
);

foreach (var pair in matchedPairs)
{
    // 执行业务逻辑
}

场景2:针对单个指定的List<Items>从apiData中筛选匹配项

如果你已经有了要匹配的目标db2列表,直接用Where筛选即可:

// 你的目标db2列表
List<Items> targetDb2Items = 你的目标对象;

// 筛选匹配的api列表
var matchedApiItems = apiData
    .Where(apiList => apiList[0].Value == targetDb2Items[0].Value && apiList[27].Value == targetDb2Items[27].Value)
    .ToList();

if (matchedApiItems.Any())
{
    // 存在匹配结果,执行业务逻辑
}

注意事项

  • 请确保所有List<Items>的长度不小于28,否则会触发索引越界异常,如有需要可以在匹配条件中先加list.Count >= 28的判断。
  • 如果Items.Value是引用类型,需要确认该类型已经正确重写了Equals和GetHashCode方法,避免出现仅比较引用地址的异常情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:06:01