private IEnumerator<string> Random(IEnumerable<string> enumerable)
{
List<string> items = enumerable.ToList();
var rand = new Random(Environment.TickCount + GC.CollectionCount(1));
IList<int> alreadyReturned = new List<int>();
int i = 0;
while(i < items.Count)
{
int next = rand.Next(0, items.Count);
if (!alreadyReturned.Contains(next))
{
i++;
alreadyReturned.Add(next);
yield return DevNameFor(items[next]);
}
}
}