2010-06-17 107 views
1

我有一個包含10個名稱(U1,U2,U3..and等等)的類。我必須每天選擇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 2010-06-17 06:21:24

+0

我不會真的存儲記錄..假設一列List 與一個名爲Name的列..我只是想產生具有給定條件的輸出..可能嗎? – Jasl 2010-06-17 06:59:24

+0

讓編輯以固定的重複順序(例如U1,U2,U3,U4,U5,U6,U7,U8,U9,U10,U1,U2等)隨機選擇貢獻者會更好嗎?您可以隨機選擇10個編輯器編輯器,但是您可以選擇第一個編輯器與上一個編輯器最後一個編輯器相同的編輯器。 – 2010-06-17 08:31:40

回答

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); 
}