0
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);

要素 removeObj を持つこの List のインデックスを取得したいと考えています。

FindIndex に無効な引数があるというエラーが表示されます。

removeObj と indexsAndValues は、indexsAndValues がリストであり、removeObj が同じ型のオブジェクトであることを除いて、同じ型です。

removeObj を条件の述語として使用できないのはなぜですか?

4

4 に答える 4

1

FindIndexパラメータとして述語が必要です。述語を指定するためにラムダ式を使用できます

idd = indicesAndValues.FindIndex(item => item == removeObj);

次のようなより複雑なシナリオで使用します

idd = indicesAndValues.FindIndex(item => item.Name == "abc");

(これにより、「abc」という名前を持つ最初の項目のインデックスが検索されます。)

List<T>IndexOfオブジェクトを見つけるために使用できる別の方法があります

idd = indicesAndValues.IndexOf(removeObj);
于 2012-12-21T15:58:17.860 に答える
0

に述語を渡す必要がありますFindIndex

idd = indicesAndValues.FindIndex(o => o == removeObj);

より良い代替手段は次を使用しています。

idd = indicesAndValues.IndexOf(removeObj);

最後に、削除された値を知る必要がない場合は、コード全体を次のように書き直すことができます。

indicesAndValues.RemoveAll(obj => obj.Value == "");
于 2012-12-21T15:56:19.570 に答える
0

代わりにIndexOfを使用してください。FindIndexは、直接オブジェクトではなく、述語を取ります。オブジェクトだけを見つけたい場合IndexOfは、より簡単なアプローチです。

于 2012-12-21T15:56:47.030 に答える
0

これを試して:

idd = indicesAndValues.FindIndex(o => o == removeObj);
于 2012-12-21T15:57:30.470 に答える