Collection/Dictionary.Count 返回一个与实际元素个数不同的值?
Collection/Dictionary.Count returning a different value to the actual number of elements?
我可能遗漏了一些明显的东西 - 但是当我对字典或集合执行 .Count
时,与字典或集合中的实际元素数相比,我得到的计数是错误的。
我有计算字符串中单词数的代码,returns Collection<KeyValuePair<string, uint>>
。
这是我的代码:
string myString = String.Format("Hello world this is test test test test hi");
var result = WordCounter.GetWordCollection(myString);
result.Dump(); //Using LINQPad .Dump() method
Console.WriteLine ("Counted {0} words in {1}ms", result.Count, stopwatch.Elapsed.Milliseconds);
foreach (var word in result)
{
Console.WriteLine ("{0} - {1}", word.Key, word.Value);
}
结果:
怎么了?
编辑:正如comment/answer 所说,我在无意中计算了唯一单词的数量。我需要使用 result.Sum(n => n.Value)
.
它工作正常 - 字典中有七个键,每个键都有一个值,表示它们在源文本中的出现次数。数到七意味着有七个独特的词。对这些值求和将得出包括重复在内的总字数。
我可能遗漏了一些明显的东西 - 但是当我对字典或集合执行 .Count
时,与字典或集合中的实际元素数相比,我得到的计数是错误的。
我有计算字符串中单词数的代码,returns Collection<KeyValuePair<string, uint>>
。
这是我的代码:
string myString = String.Format("Hello world this is test test test test hi");
var result = WordCounter.GetWordCollection(myString);
result.Dump(); //Using LINQPad .Dump() method
Console.WriteLine ("Counted {0} words in {1}ms", result.Count, stopwatch.Elapsed.Milliseconds);
foreach (var word in result)
{
Console.WriteLine ("{0} - {1}", word.Key, word.Value);
}
结果:
怎么了?
编辑:正如comment/answer 所说,我在无意中计算了唯一单词的数量。我需要使用 result.Sum(n => n.Value)
.
它工作正常 - 字典中有七个键,每个键都有一个值,表示它们在源文本中的出现次数。数到七意味着有七个独特的词。对这些值求和将得出包括重复在内的总字数。