[英]Dynamics crm Query expression Email Entity with to attribute
嗨,我被困在如何通过电子邮件地址中to
字段从电子邮件实体过滤器查询。
private static EntityCollection GetEmails(IOrganizationService service, string entityName, string emailaddress, ColumnSet cols)
{
QueryExpression query = new QueryExpression
{
EntityName = "email",
Criteria = new FilterExpression
{
//FilterOperator = LogicalOperator.And,
Conditions = {
new ConditionExpression {
AttributeName = "statuscode",
Operator = ConditionOperator.LessThan,
Values = {
1
}
}
}
},
LinkEntities = {
new LinkEntity {
LinkFromEntityName = "activitypointer",
LinkFromAttributeName = "activityid",
LinkToEntityName = "activityparty",
LinkToAttributeName = "activityid",
LinkCriteria = new FilterExpression {
FilterOperator = LogicalOperator.And,
Conditions = {
new ConditionExpression {
AttributeName = "addressused",
Operator = ConditionOperator.Equal,
Values = {
"agus@yahoo"
}
}
}
}
}
}
};
return service.RetrieveMultiple(query);
}
通过右键,有一个记录,其中to
现场包含agus@yahoo
。 但是此方法返回零记录。
您应该将ConditionOperator.Like
与%
一起使用,而不是ConditionOperator.Equal
更新 :
我很快在XrmToolBox Fetchxml构建器中进行了查询,并从那里复制了QueryExpression等效项。 是的,您必须使用activityparty
而不是activitypointer
。 (不知道您的查询如何不会因找不到列而失败!?)
// Instantiate QueryExpression QEemail
var QEemail = new QueryExpression("email");
QEemail.TopCount = 50;
// Add columns to QEemail.ColumnSet
QEemail.ColumnSet.AddColumns("activityid", "activitytypecode");
// Define filter QEemail.Criteria
QEemail.Criteria.AddCondition("activitytypecode", ConditionOperator.Equal, 4202);
// Add link-entity QEemail_activityparty
var QEemail_activityparty = QEemail.AddLink("activityparty", "activityid", "activityid");
// Add columns to QEemail_activityparty.Columns
QEemail_activityparty.Columns.AddColumns("addressused");
// Define filter QEemail_activityparty.LinkCriteria
QEemail_activityparty.LinkCriteria.AddCondition("addressused", ConditionOperator.Like, "%arunvinoth%");
为了完整起见,下面是代码。
private static EntityCollection GetEmails(IOrganizationService service, string entityName, ColumnSet cols)
{
QueryExpression query = new QueryExpression
{
EntityName = "email",
Criteria = new FilterExpression
{
//FilterOperator = LogicalOperator.And,
Conditions = {
new ConditionExpression {
AttributeName = "statuscode",
Operator = ConditionOperator.Equal,
Values = { 1 }
}
}
},
LinkEntities = {
new LinkEntity {
LinkFromEntityName = "email",
LinkFromAttributeName = "activityid",
LinkToEntityName = "activityparty",
LinkToAttributeName = "activityid",
LinkCriteria = new FilterExpression {
FilterOperator = LogicalOperator.And,
Conditions = {
new ConditionExpression {
AttributeName = "addressused",
Operator = ConditionOperator.Like,
Values = { "%" + "agus@yahoo" + "%" }
}
}
}
}
}
};
return service.RetrieveMultiple(query);
}
感谢@Arun
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.