Je souhaite faire une copie d'un IEnumerable<T>
dans lequel un seul élément d'un index donné a été remplacé par une valeur donnée.Copier IEnumerable, remplacer un élément
I définit la méthode suivante qui fait ce que je veux:
public static IEnumerable<T> ReplaceAt<T>(this IEnumerable<T> source, T item, int index)
{
foreach (T before in source.Take(index))
{
yield return before;
}
yield return item;
foreach (T after in source.Skip(index + 1))
{
yield return after;
}
}
Cependant, alors que peut-être facile à comprendre, il semble « inefficace » pour créer deux itérateurs, dont un Saute les éléments déjà prises par le premier itérateur.
Existe-t-il une meilleure façon de définir cela?
Eh bien, juste. Cette réponse earler de la guerre que le mien :) – tym32167
@ tym32167 À peine, mais j'ai voté votre réponse de toute façon. ;) –