Ich habe die folgende Liste von verschiedenen Strings:Gibt es einen besseren Weg, um das nächste Element in einer Liste und Schleife vom Ende nach vorne zu bringen?
"A"
"B"
"C"
Wenn ich das Produkt nach der A möge, erhalte ich B. Nach B, Ich bekomme C. Nach C bekomme ich A. Zur Zeit habe ich den folgenden Code, aber aus irgendeinem Grund fühlt es sich für mich an, dass es einen besseren Weg gibt (vielleicht?).
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];
}
Ich bin auf jeden Fall offen für eine LINQ-artige Möglichkeit, dies auch zu tun :)
denke ich, dass dies: http://stackoverflow.com/questions/716256/creating-a-circually-linked-list-in-c ist was du suchst – hyp
@hyp: Nun, das würde funktionieren, wenn der übergebene Parameter eine 'CircularLinkedList' wäre, aber es ist nur ein 'IList '. –