Quale sarebbe il modo più elegante per elaborare il primo elemento IEnumerable in modo diverso rispetto ad altri, senza dover eseguire il test su ogni iterazione?Il modo più elegante per elaborare prima IEnumerable item in modo diverso
Con un test su ogni iterazione, sarebbe simile a questa:
// "first item done" flag
bool firstDone = false;
// items is an IEnumerable<something>
foreach (var item in items)
{
if (!firstDone)
{
// do this only once
ProcessDifferently(item);
firstDone = true;
continue;
}
ProcessNormally(item);
}
Se faccio questo:
ProcessDifferently(items.First());
ProcessNormally(items.Skip(1)); // this calls `items.GetEnumerator` again
che richiamerà GetEnumerator
due volte, che vorrei evitare (per Casi Linq-to-Sql, ad esempio).
Come lo faresti, se hai bisogno di fare più volte il codice?
Grazie, pulito e pulito. Fa esattamente quello che ho chiesto. – dilbert