Dar*_*ryl 4 c#-4.0 dynamics-crm-2011
我有一个"new_Term"实体,带有"new_StartDate"和"new_EndDate"属性.我实际上想在一个Query Expression中编写这个语句:
new_StartDate <= DateTime.UtcNow <= new_EndDate
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是使用Between ConditionOperator,但between运算符仅适用于单个属性,即:
// Not valid because the first parameter expects a string attribute name, not a value
new ConditionExpression(DateTime.UtcNow.Date, ConditionOperator.Between, "new_startdate", "new_enddate")
Run Code Online (Sandbox Code Playgroud)
除了明显的两个条件表达式之外,还有一种方法可以在单个条件表达式中完成吗?
new ConditionExpression("new_startdate", ConditionOperator.LessEqual, DateTime.UtcNow);
new ConditionExpression("new_enddate", ConditionOperator.GreaterEqual, DateTime.UtcNow);
Run Code Online (Sandbox Code Playgroud)
我相信您在问题的最底部有最好的答案:
new ConditionExpression("new_startdate", ConditionOperator.LessEqual, DateTime.UtcNow);
new ConditionExpression("new_enddate", ConditionOperator.GreaterEqual, DateTime.UtcNow);
Run Code Online (Sandbox Code Playgroud)
ConditionOperator枚举是限制因素 - 无论您是编写fetchXml还是使用queryexpression,您都会遇到此枚举中可用的conidition运算符.正如你正确指出的那样,两者之间没有你需要的参数.
您唯一的其他支持(仅限内部部署)选项进一步减少该语句是使用SQL来访问过滤器视图,但这肯定是矫枉过正:)