2016-07-30 15 views
-3
static void Main(string[] args) 
{ 
    List<string> classroom = new List<string> { "Armen", "Babken", "Hayk", "Edgar", "Tatev", "Anna", "Aram", "Karo", "Baghdig", "Harut", "Ruzanna" }; 
    foreach (string student in classroom) 
    { 
     Console.WriteLine(student); 
    } 

    List<string> shuffledClassroom = ShuffleList(classroom); 
    foreach (string student in shuffledClassroom) 
    { 
     Console.WriteLine(student); 
    } 

    Console.ReadLine(); 
} 

static List<T> ShuffleList<T>(List<T> inputList) 
{ 
    List<T> randomList = new List<T>(); 

    Random rnd = new Random(); 
    int randomIndex = 0; 
    while (inputList.Count > 0) 
    { 
     randomIndex = rnd.Next(0, inputList.Count); 
     randomList.Add(inputList[randomIndex]); 
     inputList.RemoveAt(randomIndex); 
    } 

    return randomList; 
} 

回答

-1

试试这个

List<string> classroom = new List<string> { "Armen", "Babken", "Hayk", "Edgar", "Tatev", "Anna", "Aram", "Karo", "Baghdig", "Harut", "Ruzanna" }; 
var groups = classroom.Select((x,i) => new {name = x, group = (int)i/4}).GroupBy(y => y.group).Select(z => z.Select(a => a.name).ToArray()).ToArray(); 

要获得随机列表

List<string> classroom = new List<string> { "Armen", "Babken", "Hayk", "Edgar", "Tatev", "Anna", "Aram", "Karo", "Baghdig", "Harut", "Ruzanna" }; 
Random rand = new Random(); 
var groups = classroom.Select(m => new { name = m, rand = rand.Next()}).OrderBy(x => x.rand).Select((x,i) => new {name = x.name, group = (int)i/4}).GroupBy(y => y.group).Select(z => z.Select(a => a.name).ToArray()).ToArray();