2015-08-22 5 views
0

У меня есть примерный список ниже. В основном я хочу, чтобы иметь возможность циклически выполнять queryResult и на основе значения TotalNumberOfUsersInGrp, печатать имена первых 5 пользователей в первой группе, а затем 5 в другой группе.Использование вложенных данных foreach для группировки данных

Я не могу продолжить, поскольку вы можете использовать foreach только с коллекцией.

Как можно продолжить?

 public class PlayerInformation 
      { 
       public string fullName { get; set; } 
       public string rating { get; set; }  
      } 

      class Program 
      { 
       static void Main(string[] args) 
       { 
        Int32 TotalNumberOfUsersInGrp = 5;  
        List<PlayerInformation> objGetPlayerInfor = RankPlayers(); 
        var queryResult = objGetPlayerInfor.OrderByDescending(q => q.rating);  

        foreach (var item in queryResult) 
        { 
         foreach (var item2 in TotalNumberOfUsersInGrp) 
         { 
          //Todo... 
          //Print Group 1 as a header 
          //Print the fullName of the first 5 players under the title group1 
          //Next Print Group 2 as a header 
          //Print the 5 next names under the group 2 header. 
         } 
        } 
       } 

       public static List<PlayerInformation> RankPlayers() 
       {   
        List<PlayerInformation> objPlayers = new List<PlayerInformation>(); 
        objPlayers.Add(new PlayerInformation{fullName = "Tola", rating = "1001"}); 
        objPlayers.Add(new PlayerInformation{fullName = "David", rating = "1002"}); 
        objPlayers.Add(new PlayerInformation{fullName = "Bayo", rating = "1003"}); 
        objPlayers.Add(new PlayerInformation{fullName = "Sumbo", rating = "1005"}); 
        objPlayers.Add(new PlayerInformation{fullName = "Demola", rating = "1008"}); 
        objPlayers.Add(new PlayerInformation{fullName = "Patrick", rating = "2001"}); 
        objPlayers.Add(new PlayerInformation{fullName = "Folusho", rating = "2004"}); 
        objPlayers.Add(new PlayerInformation{fullName = "Olawale", rating = "2006"}); 
        objPlayers.Add(new PlayerInformation{fullName = "Johnson", rating = "2008"}); 
        objPlayers.Add(new PlayerInformation{fullName = "Ibrahim", rating = "1006"}); 
        return objPlayers.ToList(); 
       } 
      } 

ответ

0

Нужно ли использовать вложенный foreach? Первый foreach ставит все результаты игрока (по убыванию). Если вы хотите напечатать сразу 5 игроков, вы можете использовать другую для выхода из цикла или просто распечатать 5 игроков в первом цикле foreach следующим образом:

int playerIndex=0; 
    int groupIndex=1; 
    foreach (var item in queryResult) 
    { 
     if((playerIndex%TotalNumberOfUsersInGrp)==0){ 
       Console.WriteLine("group:" + groupIndex); 
       groupIndex++; 
     } 
     Console.WriteLine("player:" + item.fullName); 
     playerIndex++; 
    } 
+0

Спасибо. Это не работает. Ничего не напечатано – user2320476

+0

И чтобы ответить на ваш вопрос, мне не нужно использовать вложенный цикл. Все, что работает, прекрасно. – user2320476

+0

Это работает для меня .. Я ошибался в коде. Чтобы распечатать полное имя игрока, вы должны использовать item.fullName, а не item [i] – OGCheeze

Смежные вопросы