如何用linq获取c#中字典的前N个值
本文关键字:个值 字典 何用 linq 获取 | 更新日期: 2023-09-27 18:17:37
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
.
Dictionary<TKey, TValue>
不维持秩序。您可能希望使用SortedDictionary<TKey, TValue>
来获取前x项。
由于您的问题不清楚,我将假设您正在寻找具有相同键的新字典,但每个值中只有前N个项:
var firstN = dict.ToDictionary(
kvp => kvp.Key,
kvp => kvp.Value.Take(CONST_MAX).ToList());
尝试:如果你正在比较dic的值
return mydic
.Where(p => p.value == myvalue)
.ToDictionary(p => p.Key, p => p.Value);
使用Take()方法
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);
}