我有一个名为Quotes的linq-to-sql表格,包含两列:作者和引语。如何选择一行中的两列并且是随机的?
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());
这里有一种实现你想要做的事情的方法:
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();
try it:
list.OrderBy(x => Guid.NewGuid()).Take(1).first();
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);
Next
方法是所有Random
对象上都可用的标准函数。context.Quotes.Count
是指您的数据上下文和其中的Quotes表。请查看Random
的文档:http://msdn.microsoft.com/en-us/library/system.random%28v=VS.100%29.aspx - Nathan Anderson