我有一个返回结果列表的查询。我想从该列表中选择一个随机项目。
var query = (from...
where...
select q).Random(1); //Something like this?
怎么做?假设我想要选择一个项目。如果还有更多,那么我希望以随机顺序选择其中一个。
答案 0 :(得分:4)
var query = (from...
where...
orderby Guid.NewGuid()
select q).First();
答案 1 :(得分:0)
您可以利用Shuffle
中发布的Randomize a List in C#示例与LINQ Take
方法一起在IList<T>
上创建扩展方法,您需要{ {1}}在调用ToList
之前的选择,除非您将其移到扩展程序中。
Random
答案 2 :(得分:0)
这种随机播放方法比其他答案更好。链接时仍然不会有任何性能问题,而且仍然是LINQ。
BadCredentialsException: Bad credentials
用法:
public static IEnumerable<T> TakeRandom<T>(this IEnumerable<T> source, int count)
{
return source.Shuffle().Take(count);
}
public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> source)
{
return source.OrderBy(x => Guid.NewGuid());
}