SLa*_*aks 62
像这样:
var rand = new Random();
var user = users[rand.Next(users.Count)];
Run Code Online (Sandbox Code Playgroud)
Dan*_*bić 27
用途ElementAt
:
var rand = new Random();
var user = users.ElementAt( rand.Next( users.Count() ) );
Run Code Online (Sandbox Code Playgroud)
lon*_*gda 10
为什么不创建通用助手和/或扩展名?!
namespace My.Core.Extensions
{
public static class EnumerableHelper<E>
{
private static Random r;
static EnumerableHelper()
{
r = new Random();
}
public static T Random<T>(IEnumerable<T> input)
{
return input.ElementAt(r.Next(input.Count()));
}
}
public static class EnumerableExtensions
{
public static T Random<T>(this IEnumerable<T> input)
{
return EnumerableHelper<T>.Random(input);
}
}
}
Run Code Online (Sandbox Code Playgroud)
用法是:
var list = new List<int>() { 1, 2, 3, 4, 5 };
var output = list.Random();
Run Code Online (Sandbox Code Playgroud)
对于Entity Framework或Linq 2 Sql,可以使用此扩展方法
public static T RandomElement<T>(this IQueryable<T> q, Expression<Func<T,bool>> e)
{
var r = new Random();
q = q.Where(e);
return q.Skip(r.Next(q.Count())).FirstOrDefault();
}
// persons.RandomElement(p=>p.Age > 18) return a random person who +18 years old
// persons.RandomElement(p=>true) return random person, you can write an overloaded version with no expression parameter
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33356 次 |
最近记录: |