我有以下变量
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();