Je suis à la recherche d'un meilleur "modèle" pour travailler avec une liste des éléments qui ont chacun besoin traitées et ensuite, selon les résultats sont supprimés de la liste.
Vous ne pouvez pas utiliser .Remove(element)
à l'intérieur d'un foreach (var element in X)
... vous aussi vous ne pouvez pas utiliser for (int i = 0; i < elements.Count(); i++)
et .RemoveAt(i)
.
Auparavant, j'ai fait des choses folles comme ceci (résumé = construction d'une structure générique autour de la "élément" de tenir une valeur vraie ou fausse qui détermine si oui ou non il doit être supprimé de la liste):
public List<String> AttemptToProcessList(List<string> list) {
var listTracked = new List<KeyValuePair<string, bool>>();
list.ForEach(item => listTracked.Add(new KeyValuePair<string, bool>(item, false)));
for (int i = 0; i < listTracked.Count; i++) {
var result = ProcessListItem(listTracked[i].Key);
if (result) {
listTracked[i] = new KeyValuePair<string, bool>(listTracked[i].Key, true);
}
}
foreach (var item in listTracked.Where( listItem => listItem.Value )) {
list.Remove(item.Key);
}
return list;
}