2011-12-12 86 views
0
Dictionary<string,List<string>> dict =new Dictionary<string,List<string>>(){...}; 

我需要,通過過濾LINQ字典類型的結果;篩選條件是:if TValue's count > CONST_MAX, then TValue only return top CONST_MAX items如何在linq中使用c#中字典的前N個值?

+5

你可以修改你的問題嗎?我不清楚你在問什麼 – BrokenGlass

+4

那麼你到目前爲止嘗試過什麼? –

回答

2

由於您的問題不清楚,我會假設你正在尋找一個新的字典,相同的密鑰,但只有前N項中的每個值:

var firstN = dict.ToDictionary(
        kvp => kvp.Key, 
        kvp => kvp.Value.Take(CONST_MAX).ToList()); 
3

Dictionary<TKey, TValue>不維持秩序。您可能需要使用SortedDictionary<TKey, TValue>來獲取頂級x項目。

1

嘗試:如果你是比較DIC

return mydic 
    .Where(p => p.value == myvalue) 
    .ToDictionary(p => p.Key, p => p.Value); 
1

值使用採取()方法

 Dictionary<string, string> colours = new Dictionary<string, string>(); 

     colours.Add("1", "Red"); 
     colours.Add("2", "Black"); 
     colours.Add("3", "Green"); 
     colours.Add("4", "Yellow"); 

     var top2 = colours.Take(2); 

     foreach (KeyValuePair<string, string> colour in top2) 
     { 
      Console.WriteLine("{0}-{1}", colour.Key, colour.Value); 
     } 
+0

如果需要返回前N項僅當特定條件爲真,則可以使用TakeWhile()方法 - http://msdn.microsoft.com/en-us/library/bb534804.aspx –

相關問題