public static class ShuffleExtensions { public static IEnumerable<tsource> RandomShuffle<tsource>(this IEnumerable<tsource> source) { var rand = new Random(); return source.Select(t => new { Index = rand.Next(), Value = t }) .OrderBy(p => p.Index) .Select(p => p.Value); } }