2011-01-30 27 views

Respuesta

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

context.Quotes.Skip(toSkip).Take(1).First(); 
+0

Lo que hace esta línea de hacer: int = aSaltar rand.Next (0, context.Quotes.Count); ? – frenchie

+0

Está generando un número que es el índice de la cotización aleatoria. Dice, elija un número aleatorio entre 0 y el número de citas en el DataContext. –

+0

¡ah bien! es un método de extensión en tipos aleatorios. – frenchie

1

Aquí es una manera de lograr lo que quiere hacer:

var quotes = from q in dataContext.Quotes select q; 
int count = quotes.Count(); 
int index = new Random().Next(count); 
var randomQuote = quotes.Skip(index).FirstOrDefault(); 
5

Si estás haciendo LINQ a objetos y no es necesario que esto funcione en SQL, puede utilizar ElementAt() en lugar de la más prolija 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); 
3

lo hice algo como esto:

list.ElementAt(rand.Next(list.Count()); 

He pegado un montón de operaciones al azar, incluyendo seleccionar y mezclar, como métodos de extensión. Esto los hace disponibles al igual que todos los otros métodos de extensión de la colección.

Puedes ver mi código en el artículo Extending LINQ with Random Operations.

0

1 En primer lugar crear una clase con propiedades rend consulta

public class tbl_EmpJobDetailsEntity 
{ 
    public int JpId { get; set; } 
    public int rend 
    { 
    get 
     { 
     Random rnd = new Random(); 
     return rnd.Next(1, 100); 
     } 
    } 
} 

2 LINQ

var rendomise = (from v in db.tbl_EmpJobDetails 
select new tbl_EmpJobDetailsEntity 
{ 
    JpId=v.JpId 
}).OrderBy(o=>o.rend); 
Cuestiones relacionadas