我正在使用以下代码来获取字典及其索引的每个值
foreach (var termIndex in freq.Select(entry => GetTermIndex(entry.Key)))
{
var wordFreq = entry.Value;
........
}
为什么突然出现错误
当前上下文中不存在名称“条目”
出现?有人可以帮忙吗?
非常感谢
答案 0 :(得分:6)
entry
在lambda中定义 - 在Select
的参数中,并且只在其范围内。
答案 1 :(得分:5)
要迭代字典元素,您所要做的就是:
foreach (var entry in freq)
{
var wordFreq = entry.Value;
........
........
}
答案 2 :(得分:2)
您在字典上定义了两个迭代器:foreach
循环和Select
操作。您应该将它们合并为一个:
foreach (var entry in freq)
{
var termIndex = GetTermIndex(entry.Key);
var wordFreq = entry.Value;
// ........
// ........
}
答案 3 :(得分:2)
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;
........
........
}
答案 4 :(得分:1)
你应该改变:
...
var wordFreq = entry.Value;
...
要:
...
var wordFreq = termIndex.Value;
...
因为这是foreach中的对象,所以entry在lambda表达式的范围内