2017-09-26 3 views
0

J'ai un dictionary où la valeur est list de chaînes. Et je veux commander le dictionnaire par le nombre de chaînes dans chaque list. Donc le premier kvp que j'imprime est le kvp avec le plus grand nombre d'éléments dans le list.C# Comment commander dictionnaire <chaîne, liste <string>> par list.count?

J'ai vu cette réponse sous une autre question ici dans stackoverflow, mais je pense qu'il me manque quelque chose.

foreach (var kvp in teams.OrderBy(x => x.Value.Count)) 
+0

Pourriez-vous s'il vous plaît poster votre code – maxspan

Répondre

2

Vous êtes très proche, mais il semble que vous voulez descendre:

using System; 
using System.Linq; 
using System.Collections.Generic; 

public class Program 
{ 
    public static void Main() 
    { 
     var teams = new Dictionary<string, List<string>>(); 
     teams.Add("Short List", new List<string> {"One","Two"}); 
     teams.Add("Medium List", new List<string> {"One","Two", "Three"}); 
     teams.Add("Long List", new List<string> {"One","Two", "Three", "Four"}); 

     foreach (var kvp in teams.OrderByDescending(x => x.Value.Count)) 
     { 
      Console.WriteLine("Team {0} has {1} items.", kvp.Key, kvp.Value.Count); 
     } 
    } 
} 

Sortie:

Team Long List has 4 items. 
Team Medium List has 3 items. 
Team Short List has 2 items. 

Check it out sur .NET Fiddle.