in C# .net 3.5 Linq가 내 사용자 테이블에서 모든 사용자를 얻습니다.리스트의 무작위 요소LINQ SQL
이제이 목록에서 무작위 사용자를 반환합니다. 어떻게해야합니까? 이처럼
in C# .net 3.5 Linq가 내 사용자 테이블에서 모든 사용자를 얻습니다.리스트의 무작위 요소LINQ SQL
이제이 목록에서 무작위 사용자를 반환합니다. 어떻게해야합니까? 이처럼
:
var rand = new Random();
var user = users[rand.Next(users.Count)];
참고 : 실제 코드에서'var rand = new Random();'은 한 번만 시드되도록 다른 곳에서 초기화되어야합니다. 이 코드가 연속적으로 여러 번 호출되면,'Random'의 새로운 인스턴스는 동일한 시드를 사용하여 결국'Next'를 호출 할 때 같은 값을 반환 할 수 있습니다. – Brian
실제로,이 랜드는'정적 일 수 있습니다. –
어떻게 이런 일에 대해?
var users = GetUsers();
var count = user.Count();
var rand = new System.Random();
var randomUser = users.Skip(rand.Next(count)).FirstOrDefault();
'IList
옳았습니다. 그러나 질문이 표현 된 방식에는 애매 모호함이 많이 있습니다. – ilivewithian
사용 ElementAt
: 엔티티 프레임 워크 또는 Linq에 2 SQL에 대한
var rand = new Random();
var user = users.ElementAt(rand.Next(users.Count()));
, 일반 도우미 및/또는 확장을 작성하지 왜이 확장 방법
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
을 사용할 수 있습니다!
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);
}
}
}
사용법은 다음과 같습니다 의사 난수의 생성에
var list = new List<int>() { 1, 2, 3, 4, 5 };
var output = list.Random();
Random
클래스를 사용할 수 있습니다. 배열이나 목록에 유효한 인덱스 범위 내에서 임의의 숫자를 생성 할 때 사용합니다. 당신이 더 많은 예제를 보려면
Random rand = new Random();
var user = Users[rand.Next(Users.Count)];
, 나는 몇 가지 임의 지향 LINQ 확장을 작성하고 기사 Extending LINQ with Random Operations에 발표했다.
[Linq : Linq를 사용하는 임의의 개체를 얻는 방법] 가능한 복제본 (http://stackoverflow.com/questions/3173718/linq-how-to-get-a-random-object-using-linq) – jfar