闽公网安备 35020302035485号
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));
输出结果如下: