Obtenir l'index d'un objet dans une liste générique
J'ai une liste d'objets personnalisés avec deux propriétés comme des identificateurs (IDa, IDb)
chaque fois que j'ai supprimer un objet j'ai besoin de savoir c'est de l'indice.
comment puis-je obtenir un indice d'un objet sans en boucle toute la liste?
List<CustomObject> list =new List<CustomObject>();
list.RemoveAll((MiniMapRecord p) => p.IDa == IDa.SystemID & p.IDb == pInputRecordMap.IDb);
source d'informationauteur user437631
Vous devez vous connecter pour publier un commentaire.
La méthode que vous voulez, c'est FindIndex(Prédicat)
Comme d'autres l'ont dit, il n'y a aucun moyen d'éviter une boucle sur les éléments d'en trouver un à moins que vous:
Souviens de l'index. Lorsque vous créez la liste, enregistrer les indices pertinents à une variable de membre. Cela peut ne pas être approprié pour votre problème.
Ou:
Garder la liste triée et faire une recherche binaire pour l'élément. Ce peut aussi ne pas travailler parce que vous avez deux identifiants.
IndexOf()
est une solution simple, mais cela aura un coût O(N) (linéaire).Vous pouvez utiliser le
IndexOf()
méthode pour obtenir l'index d'un élément donné de votreList<>
.Toutefois, notez que depuis une liste liée implique pas d'accès aléatoire, il n'y a vraiment pas d'autre moyen de trouver un élément spécifique (et, par conséquent, son index) autres que de commencer par le début et la vérification d'un élément à la fois.
Utiliser le
.IndexOf()
méthode de la liste pour trouver l'index, puis utilisez.RemoveAt()
pour l'enlever.