Как перечислить результаты Linq? - PullRequest
0 голосов
/ 29 октября 2010

Ссылаясь на эту тему: Минимизируйте счетчик строки LINQ И используя следующий предоставленный код:

string src = "for each character in the string, take the rest of the " +
             "string starting from that character " +
             "as a substring; count it if it starts with the target string";

var results = src.Split()               // default split by whitespace
                 .GroupBy(str => str)   // group words by the value
                 .Select(g => new
                              {
                                  str = g.Key,      // the value
                                  count = g.Count() // the count of that value
                              });

Мне нужно перечислить все значения (ключевые слова и количество вхождений) и загрузитьих в NameValueCollection.Из-за моего очень ограниченного знания Linq, я не могу понять, как это сделать.Пожалуйста, порекомендуйте.Спасибо.

Ответы [ 3 ]

5 голосов
/ 29 октября 2010

Не пойму, почему вы хотите поместить что-либо в NameValueCollection, но есть ли какая-то причина, почему

foreach (var result in results)
    collection.Add(result.str, result.count.ToString());

не достаточно?

(РЕДАКТИРОВАТЬ: Изменен аксессор на Add, что может быть лучше для вашего случая использования.)

Если ответ «нет, это работает», вы, вероятно, должны остановиться и выяснить, что, черт возьми, делает приведенный выше код, прежде чем использовать его в своем проекте.

2 голосов
/ 29 октября 2010

Похоже, что ваша конкретная проблема может так же легко использовать словарь вместо NameValueCollection. Я забыл, если это правильный синтаксис ToDictionary, но просто Google метод ToDictionary ():

Dictionary<string, int> useADictionary = results.ToDictionary(x => x.str, x => x.count);
1 голос
/ 29 октября 2010

Вы, конечно, хотите Dictionary вместо NameValueCollection.Весь смысл в том, чтобы показать уникальных токенов (string с) с количеством появлений каждого токена (int), да?

NameValueCollection - это коллекция специального назначения, для которой требуется строка, ключ и значение - Dictionary<string, int> - это основной способ .Net связать уникальный ключ string с соответствующим значением int.

Взгляните на различные пространства имен System.Collections , чтобы понять, для чего предназначено каждое из них.Обычно в наши дни System.Collections.Generic является наиболее распространенным, с System.Collections.Concurrent для многопоточных программ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...