2017-09-26 13 views
0

dictionary 값은 list 문자열입니다. 그리고 각 문자열의 수를 사전에 주문하고 싶습니다. list. 따라서 처음으로 kvp이 인쇄되면 list의 요소 수가 가장 많은 kvp입니다.C# list <count>에 의해 사전 <string, list <string>>를 주문하는 법?

나는 stackoverflow에 다른 질문 아래에서이 답변을 보았습니다. 그러나 나는 뭔가를 놓치고 있다고 생각합니다.

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

코드를 게시 해주세요. – maxspan

답변

2

당신은 매우 가까운,하지만 당신은 내림차순하려는 것 같은데 :

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

출력 :

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

.NET Fiddle에 체크 아웃.