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個值?
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個值?
由於您的問題不清楚,我會假設你正在尋找一個新的字典,相同的密鑰,但只有前N項中的每個值:
var firstN = dict.ToDictionary(
kvp => kvp.Key,
kvp => kvp.Value.Take(CONST_MAX).ToList());
Dictionary<TKey, TValue>
不維持秩序。您可能需要使用SortedDictionary<TKey, TValue>
來獲取頂級x項目。
嘗試:如果你是比較DIC
return mydic
.Where(p => p.value == myvalue)
.ToDictionary(p => p.Key, p => p.Value);
值使用採取()方法
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);
}
如果需要返回前N項僅當特定條件爲真,則可以使用TakeWhile()方法 - http://msdn.microsoft.com/en-us/library/bb534804.aspx –
你可以修改你的問題嗎?我不清楚你在問什麼 – BrokenGlass
那麼你到目前爲止嘗試過什麼? –