随机重新订购LINQ集合的最快方法



我有一个列表

我想重新订购,所以它们是按随机顺序排列的。

最快的方法是什么(最快,我指的是最少的代码量)

注意:根据mquander的评论,以下答案不是执行"随机排序"的推荐方法,因为它在语义上不正确,与可接受的shuffle算法相比效率不高,它基于Guids的私有实现细节,甚至滥用LINQ查询语法。然而,它是"最少的代码量"(就自己编写而不是由框架处理而言)作战人员要求

var randomOrdering = yourList.OrderBy(o => Guid.NewGuid());

如果您想在的位置随机重新排列,您应该打乱列表,那么使用扩展方法就是一个简单的单行。这假设您已经有了一个基于IList的集合。

用法:myList.Shuffle();

public static void Shuffle<T>(this IList<T> list)  
{  
    Random rng = new Random();  
    int n = list.Count;  
    while (n > 1) 
    {  
        n--;  
        int k = rng.Next(n + 1);  
        T value = list[k];  
        list[k] = list[n];  
        list[n] = value;  
    }  
}

归功于这个答案:随机化列表<T>

相关内容

  • 没有找到相关文章

最新更新