tengo la siguiente lista de distintas cadenas:¿Hay una forma mejor de devolver el siguiente artículo en una lista y pasar del extremo al frente?
"A"
"B"
"C"
Si quiero el artículo después de una, me sale B. Después de B, Obtengo C. Después de C, obtengo A. Actualmente tengo el siguiente código, pero por alguna razón siento que hay una mejor manera de hacerlo (¿quizás?).
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];
}
definitivamente estoy abierto a una forma de LINQ-esque de hacer esto, así :)
creo que esto: es http://stackoverflow.com/questions/716256/creating-a-circually-linked-list-in-c lo que está buscando – hyp
@hyp: Bueno, esto funcionaría si el parámetro que se pasa fuera un 'CircularLinkedList', pero es simplemente un 'IList '. –