List<Gedi.Models.OperacoesModel.allIndex> indicesAndValues = indicesAndValuesIE.ToList();
List<Gedi.Models.OperacoesModel.allIndex> indicesAndValuesToExclude = new List<Gedi.Models.OperacoesModel.allIndex>();
foreach (Gedi.Models.OperacoesModel.allIndex indiceValue in indicesAndValues)
{
if (indiceValue.value == "")
{
indicesAndValuesToExclude.Add(indiceValue);
}
}
int idd;
foreach (Gedi.Models.OperacoesModel.allIndex removeObj in indicesAndValuesToExclude)
{
idd = indicesAndValues.FindIndex(removeObj);
}
基于上面的代码,
idd = indicesAndValues.FindIndex(removeObj);
我想检索此List中包含元素removeObj;
的索引我收到一条错误,说FindIndex有一些无效的参数。
removeObj和indicesAndValues属于同一类型,除了indicesAndValues是List,removeObj只是一个相同类型的对象
为什么我无法使用removeObj作为条件的谓词?
答案 0 :(得分:1)
FindIndex
需要谓词作为参数。您可以使用lambda表达式来指定谓词
idd = indicesAndValues.FindIndex(item => item == removeObj);
您可以在更复杂的场景中使用它,例如
idd = indicesAndValues.FindIndex(item => item.Name == "abc");
(这将找到名称为“abc”的第一个项目的索引。)
List<T>
有另一种方法IndexOf
,可用于查找对象
idd = indicesAndValues.IndexOf(removeObj);
答案 1 :(得分:0)
您需要将谓词传递给FindIndex
。
idd = indicesAndValues.FindIndex(o => o == removeObj);
更好的选择是使用:
idd = indicesAndValues.IndexOf(removeObj);
最后,如果您不需要知道删除了哪些值,则可以将整个代码重写为:
indicesAndValues.RemoveAll(obj => obj.Value == "");
答案 2 :(得分:0)
答案 3 :(得分:0)
试试这个:
idd = indicesAndValues.FindIndex(o => o == removeObj);