Ho il seguente elenco di distinti stringhe:Esiste un modo migliore per restituire l'elemento successivo in un elenco e passare dalla fine alla parte anteriore?
"A"
"B"
"C"
Se voglio la voce dopo A, I get B. Dopo B, Ricevo C. Dopo C, ottengo A. Attualmente ho il seguente codice, ma per qualche ragione mi sembra che ci sia un modo migliore per farlo (forse?).
private string GetNext(IList<string> items, string curr)
{
if (String.IsNullOrWhitespace(curr))
return items[0];
var index = items.IndexOf(curr);
if (index == -1)
return items[0];
return (index + 1 == items.Count) ? items[0] : items[index + 1];
}
Sono sicuramente aperto a un modo LINQ-esque di fare questo anche :)
Penso che questo: è http://stackoverflow.com/questions/716256/creating-a-circually-linked-list-in-c cosa stai cercando – hyp
@hyp: Beh, questo funzionerebbe se il parametro che si sta passando fosse un 'CircularLinkedList', ma è solo un 'IList '. –