2011-01-30 17 views

Odpowiedz

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

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

Co robi ten wiersz zrobić: int toSkip = rand.Next (0, context.Quotes.Count); ? – frenchie

+0

Generuje liczbę będącą indeksem losowego cudzysłowu. Mówi, wybierz losową liczbę od 0 do liczby cytatów w DataContext. –

+0

ah ok! jest to metoda rozszerzenia na typy losowe. – frenchie

1

Oto jeden sposób, aby osiągnąć to, co chcesz zrobić:

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

Jeśli robisz LINQ-obiekty i nie muszą pracować na to SQL, można użyć ElementAt() zamiast bardziej gadatliwy 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

zrobiłem to coś takiego:

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

Wstawiałem szereg losowych operacji, w tym wybierz i przetasuj, jako metody rozszerzenia. Dzięki temu są one dostępne tak jak wszystkie inne metody rozszerzenia kolekcji.

Możesz zobaczyć mój kod w artykule Extending LINQ with Random Operations.

0

1 Najpierw należy utworzyć klasę o własności rozdzierać

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

2 LINQ kwerendy

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