LINQメソッドにShuffleを追加する


アイデアはDOBON.NET(Coding Horror)から。

public static IOrderedEnumerable<TSource> Shuffle<TSource>(
    this IEnumerable<TSource> source )
{
    return source.OrderBy( x => Guid.NewGuid( ) );
}

使用例:

var values = new[ ] { 1, 2, 3, 4, 5 };
foreach ( var value in values.Shuffle( ) )
{
    Console.WriteLine( value );
}

Console.WriteLine( "終了するには何かキーを押して下さい..." );
Console.ReadKey( );

実行結果

2
5
3
4
1
終了するには何かキーを押して下さい...

DOBON.NET: http://dobon.net/vb/dotnet/programing/arrayshuffle.html
Coding Horror: http://www.codinghorror.com/blog/2007/12/shuffling.html