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

C# LINQ查询返回List<List<int>>如何转换为List<int>?

问题原因

你当前的LINQ写法逐一遍历每个formField对象时,会为每个对象单独提取其下所有Action的ID生成一个独立的List<int>,最终把这些子列表汇总后得到的是嵌套结构的List<List<int>>。
后续校验代码调用actionIds.Contains(x.DFActionID)时,传入参数是int类型,但嵌套列表的存储元素是List<int>类型,类型不匹配就会触发报错。

修复方案

使用LINQ的SelectMany方法替换多层Select,直接将多层嵌套的集合拍平为一维集合,就能得到你需要的List<int>类型结果,修改后的变量定义代码如下:

var actionIds = formFields.SelectMany(x => x.GridDefinition.Actions.Select(y => y.DFActionID)).ToList();

修改后你原有的校验逻辑不需要做任何调整,就可以正常执行匹配。

可选优化

如果业务场景下不需要保留重复的Action ID,可以在ToList()前追加Distinct()去重,减少后续匹配的遍历开销:

var actionIds = formFields.SelectMany(x => x.GridDefinition.Actions.Select(y => y.DFActionID))
                          .Distinct()
                          .ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:04:03