dotnet 10 中引入了一个新的 LINQ 方法 Shuffle 可以将一个集合中的元素随机洗牌返回,今天我们详细了解下。
namespace System.Linq; publicstaticclassEnumerable { publicstatic IEnumerable<T> Shuffle<T>(this IEnumerable<T> source) { } } publicstaticclassAsyncEnumerable { publicstatic IAsyncEnumerable<T> Shuffle<T>(this IAsyncEnumerable<T> source) { } } publicstaticclassQueryable { publicstatic IQueryable<T> Shuffle<T>(this IQueryable<T> source) { } }例子
// 堆代码 duidaima.com var source = Enumerable.Range(1, 5).ToArray(); Console.WriteLine(string.Join(",", source)); source.Shuffle(); Console.WriteLine(string.Join(",", source));大家可以先猜一下输出结果会是什么,输出结果如下:
var source = Enumerable.Range(1, 5).ToArray(); Console.WriteLine(string.Join(",", source.Shuffle())); Console.WriteLine(string.Join(",", source.Shuffle().Take(3))); Console.WriteLine(string.Join(",", source.Shuffle().Take(3))); Console.WriteLine(string.Join(",", source.Shuffle().Take(6)));输出结果如下:
var source = Enumerable.Range(1, 5).ToArray(); var shuffled = source.Shuffle(); Console.WriteLine(string.Join(",", shuffled)); Console.WriteLine(string.Join(",", shuffled));输出结果如下:
Console.WriteLine("Random.Shared.Shuffle(array) sample"); var array = Enumerable.Range(1, 10).ToArray(); Console.WriteLine(string.Join(",", array)); Random.Shared.Shuffle(array); Console.WriteLine(string.Join(",", array));输出结果如下: