Ответ 1
Random rand = new Random();
int toSkip = rand.Next(0, context.Quotes.Count);
context.Quotes.Skip(toSkip).Take(1).First();
У меня есть таблица под названием Quotes в linq-to-sql, которая содержит 2 столбца: автор и цитата. Как вы выбираете оба столбца случайной строки?
Random rand = new Random();
int toSkip = rand.Next(0, context.Quotes.Count);
context.Quotes.Skip(toSkip).Take(1).First();
Если вы выполняете 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);
Я сделал это примерно так:
list.ElementAt(rand.Next(list.Count());
Я запустил кучу случайных операций, включая select и shuffle, в качестве методов расширения. Это делает их доступными, как и все другие методы расширения коллекции.
Вы можете увидеть мой код в статье Расширение LINQ со случайными операциями.
Вот один из способов добиться того, что вы хотите сделать:
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();
1 Сначала создайте класс с атрибутом rend
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);