axapta - 在 where 语句中使用方法

标签 axapta x++

Table table;

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

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

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

当我将 foo() 中的代码直接插入到调用中时,它工作得很好。但是,当调用该方法时,table 似乎没有任何引用。

我对 select 语句的工作方式有什么不理解的地方? 方法只评估一次吗?

最佳答案

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

您可以尝试将 foo 方法的逻辑合并到 where 表达式中,或者迭代 select 语句的结果并调用方法 foo 分别用于每个记录,例如:

Table table;

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

关于axapta - 在 where 语句中使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51901767/

相关文章:

axapta - 批处理参数

report - X++ 在报告表单中传递当前选定的记录

axapta - AOT 查询可以引用 TempDB 表作为数据源

regex - 如何识别一段代码中的变量名

axapta - 更改信息部分动态链接的功能

axapta - 为 Yes/No 枚举扩展 EDT

axapta - 声明字符串数组

c++ - Axapta 商务连接器

axapta - 网格中的动态值

axapta - 一次上传多个文件