在where语句中使用方法

时间:2018-08-17 19:26:41

标签: axapta x++

Table table;

    select * 
        from table
        where this.id != table.id
            && this.foo(table);

我正在尝试从X ++代码中的表中进行选择。 将该表与该表(this)中的记录进行比较。

如果一条记录的ID与表中的另一条记录的ID不相等并且foo()中的其他几个条件评估为true,则应将一条记录添加到选择中。 计划是使this.foo(table)与表中的其他记录一起评估记录。

当我将foo()中的代码直接插入到呼叫中时,它可以正常工作。但是,在调用该方法时,似乎table没有任何引用。

我对选择语句的工作方式不了解吗? 方法只是评估一次?

1 个答案:

答案 0 :(得分:6)

您不能在AX中的where语句的select表达式中使用方法(在任何其他部分也不能使用)。您的示例将无法成功编译。

您可以尝试将foo方法的逻辑合并到where表达式中,或者遍历select语句的结果并为每个记录调用方法foo单独例如:

Table table;

while select table
    where table.id != this.id
{
    if (this.foo(table))
    {
        info(table.id);
    }
}