CRM ConditionExpression 比较两个属性

CRM ConditionExpression to compare two attributes

我正在使用 Microsoft CRM SDK 检索实体。我正在用 FilterExpressionQueryExpression

如何写一个考虑两个属性的条件?我想检索属性 "Export Date" 小于 "Modified On" 的实体。 (即自上次导出后修改的所有内容)。

QueryExpression query = new QueryExpression();
FilterExpression filter = new FilterExpression();
filter.FilterOperator = LogicalOperator.Or;

ConditionExpression condition = new ConditionExpression();
// ...
//how to write this condition? 

filter.AddCondition(condition);

不幸的是,这是不可能的。唯一的方法是检索数据并对检索到的数据构建查询以获得最终结果。

查询 CRM 时,以下限制适用:

  • 条件的左侧必须是一个 CRM 属性
  • 条件的右边必须是一个常数

换句话说,不能在单个查询中直接比较属性。

根据经验,如果您的 QueryExpression 可以构建为高级查找,那么您没问题,否则您很可能需要中间查询。

在最新版本(2020 年 7 月)中,查询表达式 (SDK)、fetchxml 和 web api 中提供了比较同一实体的两个属性的功能。 Read more

This code creates a condition to return only records where the first and last names are the same

new ConditionExpression("firstname", ConditionOperator.Equal, true, "lastname");