我用下面的代码获取字典的每个值和它的指数循环通过字典,并得到每个值C#
foreach (var termIndex in freq.Select(entry => GetTermIndex(entry.Key)))
{
var wordFreq = entry.Value;
........
}
为什么突然错误
名称“条目'不存在于当前上下文中
出现??任何人都可以帮忙吗?
谢谢很多
我用下面的代码获取字典的每个值和它的指数循环通过字典,并得到每个值C#
foreach (var termIndex in freq.Select(entry => GetTermIndex(entry.Key)))
{
var wordFreq = entry.Value;
........
}
为什么突然错误
名称“条目'不存在于当前上下文中
出现??任何人都可以帮忙吗?
谢谢很多
遍历字典元素所有你需要做的是:
foreach (var entry in freq)
{
var wordFreq = entry.Value;
........
........
}
entry
在拉姆达定义 - 在参数Select
,仅在在它的范围。
你定义在你的字典两个迭代器:在foreach
循环和Select
操作。你或许应该将它们合并成一个:
foreach (var entry in freq)
{
var termIndex = GetTermIndex(entry.Key);
var wordFreq = entry.Value;
// ........
// ........
}
你应该改变:
...
var wordFreq = entry.Value;
...
要:
...
var wordFreq = termIndex.Value;
...
因为这是在foreach对象,项是在范围lambda表达式
entry=>GetTermIndex(entry.Key)
是lambda函数。它具有与返回类型GetTermIndex方法相同的传入参数'entry'和传出参数类型。
freq.Select(entry => GetTermIndex(entry.Key))
相当于:
foreach(var entry in freq)
{
yield return GetTermIndex(entry.Key);
}
条目第二代码片段的的foreach本地存在,并且不能在其外部访问。编译器对你说。
你应该重写你的代码:
foreach (var entry in freq)
{
var termIndex = GetTermIndex(entry.Key));
var wordFreq = entry.Value;
........
........
}
嗯,其实它不是完全等同的(应补充至少方法调用),但+1 –