参考此主题:Minimize LINQ string token counter 并使用以下提供的代码:
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中。由于我的林克知识非常有限,无法弄清楚如何制作它。请指教。感谢。
答案 0 :(得分:5)
我不会猜到为什么你要把任何东西放在NameValueCollection
中,但是有什么理由
foreach (var result in results)
collection.Add(result.str, result.count.ToString());
还不够吗?
(编辑:将访问者更改为Add
,这可能更适合您的使用案例。)
如果答案是“不,那就有效”,你应该停下来,弄清楚上面的代码在你的项目中使用它之前到底是做什么的。
答案 1 :(得分:2)
看起来您的特定问题可以轻松使用Dictionary而不是NameValueCollection。我忘记了这是否是正确的ToDictionary语法,但只是google ToDictionary()方法:
Dictionary<string, int> useADictionary = results.ToDictionary(x => x.str, x => x.count);
答案 2 :(得分:1)
您当然需要Dictionary
而不是NameValueCollection
。重点是显示唯一标记(string
s)以及每个标记的出现次数(int
),是吗?
NameValueCollection
是一个特殊用途的集合,需要字符串,键和值 - Dictionary<string, int>
是将唯一string
键与其对应的{{1}相关联的主流.Net方式}值。
查看各种System.Collections namespaces,了解每个人要实现的目标。通常情况下,int
是最常见的,多System.Collections.Generic
用于多线程程序。