我用下面的代碼獲取字典的每個值和它的指數循環通過字典,並得到每個值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 –