2010-06-17 3 views
1

나는 10 개의 이름 (U1, U2, U3 ... 등등)을 포함하는 클래스를 가지고있다. 나는 매일 5 개의 이름을 선택해야하며 편집자와 기여자로 4 명을 표시해야합니다.임의의 이름 선택기

임의의 이름을 선택하는 동안 한 명의 사용자가 편집자로 선택되면 모든 사람이 다시 편집자가 될 수 없다는 것을 고려해야합니다 그들의 기회.

출력은 다음과 유사하게 나타납니다

  Editor Cont1 Cont2  Cont3 Cont4 
20-Jun U1  U8  U9   U3  U4 
21-Jun U7  U2  U5   U6  U10 
22-Jun U3  U4  U9   U2  U8 
23-Jun  U4  U8  U3   U5  U2 
and so on.. 

난이 LINQ에서 할 수 있습니까?

+0

예. LINQ를 사용하여이 작업을 수행 할 수 있습니다. 아마도 하나의 성명서에 없을 것입니다. 방법을 알고 싶다면 도메인 모델을 저장하는 방법/위치를 제안하는 것이 좋습니다. "할당"(편집자/기고자)이 "사람"옆에 저장되어 있습니까? – Reddog

+0

레코드를 실제로 저장하지 않을 것입니다. Name ...이라는 단일 열을 가진 리스트를 작성하십시오. 나는 주어진 조건으로 출력을 생성하고 싶습니다. 가능합니까? – Jasl

+0

편집자를 고정 된 반복 순서 (예 : U1, U2, U3, U4, U5, U6, U7, U8, U9, U10, U1, U2 등)로 선택하고 기여자를 임의로 선택하는 것이 더 좋습니까? 편집자를 무작위로 10 개 블록으로 선택할 수는 있지만 첫 번째 편집자가 이전 블록의 마지막 편집기와 동일한 경우가있을 수 있습니다. –

답변

1

저는 Linq를 사용하지 않고 대신 .Net Framework에서 제공하는 Random 클래스를 사용합니다.

Random random = new Random(); 
List<Person> tmpList = new List<Person>(personList); 
int item = random.Next(tmpList.Count); 
Person editor = tmpList[item]; 
tmpList.RemoveAt(item); 
List<Person> contributors = new List<Person>(); 
for(int i = 0; i < 5; i++) 
{ 
    item = random.Next(tmpList.Count); 
    contributors.Add(tmpList[item]); 
    tmpList.RemoveAt(item); 
}