linq选择一个随机行

fre*_*hie 15 linq

我在linq-to-sql中有一个名为Quotes的表,其中包含2列:author和quote.如何选择随机行的两列?

ajm*_*jma 39

Random rand = new Random();
int toSkip = rand.Next(0, context.Quotes.Count);

context.Quotes.Skip(toSkip).Take(1).First();
Run Code Online (Sandbox Code Playgroud)

  • 传递给`Random`的`Next`功能的`maxValue`参数不是所产生的可能的值中的一个(所产生的值总是<`maxValue`). (2认同)

zvo*_*kov 8

如果您正在使用Linq-to-Objects而不需要它来处理SQL,则可以使用ElementAt()而不是更详细的Skip(toSkip).Take(1).First():

var rndGen = new Random(); // do this only once in your app/class/IoC container
int random = rndGen.Next(0, context.Quotes.Count);
context.Quotes.ElementAt(random);
Run Code Online (Sandbox Code Playgroud)