2010-06-17 100 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); 
}