我在linq-to-sql中有一个名为Quotes的表,其中包含2列:author和quote。如何选择随机行的两列?
答案 0 :(得分:39)
Random rand = new Random();
int toSkip = rand.Next(0, context.Quotes.Count);
context.Quotes.Skip(toSkip).Take(1).First();
答案 1 :(得分:7)
如果您正在使用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);
答案 2 :(得分:4)
我这样做了:
list.ElementAt(rand.Next(list.Count());
我将一堆随机操作(包括select和shuffle)作为扩展方法。这使它们像所有其他集合扩展方法一样可用。
您可以在文章Extending LINQ with Random Operations中看到我的代码。
答案 3 :(得分:1)
以下是实现目标的一种方法:
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();
答案 4 :(得分:0)
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);
答案 5 :(得分:0)
尝试:
list.OrderBy(x => Guid.NewGuid()).Take(1).first();