次のコードを使用して、辞書の各値とそのインデックスを取得しています
foreach (var termIndex in freq.Select(entry => GetTermIndex(entry.Key)))
{
     var wordFreq = entry.Value;
     ........
}
なぜ突然エラー
名前「エントリ」は現在のコンテキストに存在しません
現れる??誰か助けてくれませんか?
本当にありがとうございました
entryはラムダで定義されています-パラメータtoで、そのSelect範囲内にのみあります。
辞書要素を反復処理するには、次のことを行う必要があります。
foreach (var entry in freq)
{
    var wordFreq = entry.Value;
    ........
    ........
}
    entry=>GetTermIndex(entry.Key)isラムダ関数です。これには、戻り型GetTermIndexメソッドと等しい型の着信パラメーター'entry'と発信パラメーターがあります。
freq.Select(entry => GetTermIndex(entry.Key))
と同等です:
foreach(var entry in freq)
{
    yield return GetTermIndex(entry.Key);
}
エントリの2番目のコードフラグメントはforeachにローカルに存在し、その外部からアクセスすることはできません。コンパイラはあなたにそれを言います。
コードを次のように書き直す必要があります。
        foreach (var entry in freq)
        {
            var termIndex = GetTermIndex(entry.Key));
            var wordFreq = entry.Value;
            ........
            ........
        }
    foreachディクショナリに対して、ループと操作の 2 つの反復子を定義していますSelect。おそらくそれらを 1 つにマージする必要があります。
foreach (var entry in freq)
{
    var termIndex = GetTermIndex(entry.Key);
    var wordFreq = entry.Value;
    // ........
    // ........
 }
    変更する必要があります:
...
var wordFreq = entry.Value;
...
に:
...
var wordFreq = termIndex.Value;
...
これはforeachのオブジェクトであるため、エントリはラムダ式のスコープ内にあります