Как взять N лучших словарных слов в c # по linq? - PullRequest
0 голосов
/ 12 декабря 2011
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.

Ответы [ 4 ]

3 голосов
/ 12 декабря 2011

Dictionary<TKey, TValue> не поддерживает порядок.Возможно, вы захотите использовать SortedDictionary<TKey, TValue> для получения топ-х предметов.

2 голосов
/ 12 декабря 2011

Поскольку ваш вопрос неясен, я предполагаю, что вы ищете новый словарь с теми же ключами, но только с первыми N элементами в каждом значении:

var firstN = dict.ToDictionary(
                  kvp => kvp.Key,
                  kvp => kvp.Value.Take(CONST_MAX).ToList());
1 голос
/ 12 декабря 2011

Используйте метод 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);
        }
1 голос
/ 12 декабря 2011

try: если вы сравниваете значение dic

return mydic
    .Where(p => p.value == myvalue)
    .ToDictionary(p => p.Key, p => p.Value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...