数组不允许减去索引c#

FSm*_*FSm 1 c# c#-4.0

我有以下程序来计算doctionary(freq)的每个条目的文档频率

  foreach (var termIndex in freq.Select(entry => GetTermIndex(entry.Key)))
         {                                                              
            _docFreq[i][termIndex]++;
         }
Run Code Online (Sandbox Code Playgroud)

以及获得期限索引的程序

rivate int GetTermIndex(string term)
    {
        int i;
        if (_wordsIndex.TryGetValue(term, out i))
            return i;
        else
            return 0;
    }
Run Code Online (Sandbox Code Playgroud)

其中,所有术语都在另一个字典(_wordsIndex)中编入索引.

基于上述过程,如果freq中的entry.Key不存在,那么GetTermIndex将返回0并且将计算_docFreq(_docFreq [i] [0]),这就是问题所在.那么,我怎么能避免在入口时计数.键不存在?我试着做点什么

rivate int GetTermIndex(string term)
    {
        int i;
        if (_wordsIndex.TryGetValue(term, out i))
            return i;
        else
            return -1;
    }
Run Code Online (Sandbox Code Playgroud)

但是当然出现了错误"索引超出了数组的范围",因为没有_docFreq [i] [ - 1]的索引.

可以帮忙吗?非常感谢

Mar*_*age 5

如果termIndex是-1,就不要算它:

foreach (var termIndex in freq.Select(entry => GetTermIndex(entry.Key)))
{
    if (termIndex >= 0)
        _docFreq[i][termIndex]++;
}
Run Code Online (Sandbox Code Playgroud)

或使用LINQ Where:

foreach (var termIndex in freq.Select(entry => GetTermIndex(entry.Key)).Where(ti => ti >= 0))
{
    _docFreq[i][termIndex]++;
}
Run Code Online (Sandbox Code Playgroud)