0

我问推理引擎一个问题如下,如果返回结果,我想获得第一个 Fact,对于第一个 Query(问题由 Query 中的 2 个 Atoms 组成)。

strAnswer = IIf(InfEng.RunQuery(Question).Count > 0, InfEng.RunQuery(Question)(0)(0).ToString, "No Answer")

这会引发错误

异常详细信息:System.ArgumentOutOfRangeException:索引超出范围。
必须为非负数且小于集合的大小。参数名称:index"
当查询计数 = 0 时。在“观察”窗口中,它的计算结果为 0,并且当我打开评估语句时显示消息:错误且没有子项。当查询返回 Facts 时,这会顺利进行。

我替换.Any了 ,而不是 Count,但这也没有用。

当我将其更改为标准If-Then-End If时,它适用于所有情况......并且与.Count&.Any

我做错了什么?

4

1 回答 1

0

我不是 VB.NET 专家,但事实在语句InfEng.RunQuery(Question)中出现两次意味着如果. 您不希望这种情况发生,即无缘无故地运行两次查询。IIf.Count > 0

我建议您分配InfEng.RunQuery(Question)给一个变量,然后在IIf语句中使用这个变量。

于 2013-06-23T09:49:05.493 回答