内存排列随机linq的非常大的列表orderby

时间:2012-08-25 16:02:34

标签: c# linq parallel-processing sql-order-by permutation

我正在对一系列长度为104个字符的特定序列进行排列。我正在使用plinq来生成序列但没有随机顺序,结果永远不会复杂到足以被选中。

问题是使用rnd.next命令并且guid.newguid填充内存并且不返回任何结果。

有没有任何解决方案可以从C#中的linq模式中随机选择?

var query = 
             from sp1 in polar
                    ...
             from vp15 in polar                           
             where GetCompressionRatio(sp1+...+vp15)>1.5
             orderby rnd.Next(0, 100000000) * rnd.Next(0, 100000000)
             select sp1+...+vp15;


foreach (var element in query)
{
    //output
}

1 个答案:

答案 0 :(得分:1)

您正在尝试使用相同的查询解决两个非常不同的问题。即使有一个聪明的方法,我建议你一步一步。

首先,生成非随机排列。 然后,对先前的结果应用一些随机排列算法。您可以尝试非常简单的Knuth Shuffle

您的意图将更加清晰,分解可以为您提供测试和调试方面的显着优势。