我正在使用以下代码来获取字典的每个值及其索引
foreach (var termIndex in freq.Select(entry => GetTermIndex(entry.Key)))
{
var wordFreq = entry.Value;
........
}
为什么突然出错
当前上下文中不存在名称“条目”
出现??有人可以帮忙吗?
十分感谢
entry
在 lambda 中定义 - 在 to 参数中,Select
并且仅在其范围内。
要遍历字典元素,您所要做的就是:
foreach (var entry in freq)
{
var wordFreq = entry.Value;
........
........
}
您正在字典上定义两个迭代器:foreach
循环和Select
操作。您可能应该将它们合并为一个:
foreach (var entry in freq)
{
var termIndex = GetTermIndex(entry.Key);
var wordFreq = entry.Value;
// ........
// ........
}
是entry=>GetTermIndex(entry.Key)
lambda 函数。它具有与返回类型 GetTermIndex 方法相同的类型的传入参数“条目”和传出参数。
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;
........
........
}
你应该改变:
...
var wordFreq = entry.Value;
...
到:
...
var wordFreq = termIndex.Value;
...
因为 this 是 foreach 中的对象,所以 entry 在 lambda 表达式的范围内