获取列表<列表<int>>但只想列表<int>

  • 本文关键字:列表 int 只想 获取 c# linq
  • 更新时间 :
  • 英文 :


我有以下变量

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

它给我的结果是List<List<int>,但我想要的结果是List<int>我该怎么做呢?

之后,我需要检查上面列表中的ID,使用如下所示的单个ID。

var removedFormFieldsActions = existingFormFieldsActions.Where(x => !actionIds.Contains(x.DFActionID));

当前给出错误。

您的代码中有几个问题。首先,如果要映射之后的每个操作,为什么要将Actions转换为列表?因此,第一个修复是删除ToList()调用:

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

然后第二个改进就来了,它源于最基本的问题——你最终想要得到什么?所有单独列表中的所有项目都是相同的,应该放在一个单独的列表中吗?如果是这样,那么您需要使用SelectMany()操作符,它同样不需要中间的ToList(),因为最终的ToList()无论如何都会收集所有项:

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

最新更新