[英]Dynamics crm Query expression Email Entity with to attribute
Hi I was stuck on how to query from email entity filter by email address in to
field. 嗨,我被困在如何通过电子邮件地址中
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);
}
By right, there is a record where to
field contain agus@yahoo
. 通过右键,有一个记录,其中
to
现场包含agus@yahoo
。 But this method return zero records. 但是此方法返回零记录。
You should use ConditionOperator.Like
along with %
instead of ConditionOperator.Equal
您应该将
ConditionOperator.Like
与%
一起使用,而不是ConditionOperator.Equal
Update : 更新 :
I quickly did a query in XrmToolBox Fetchxml builder & copied the QueryExpression equivalent from there. 我很快在XrmToolBox Fetchxml构建器中进行了查询,并从那里复制了QueryExpression等效项。 Yes, you have to use
activityparty
and not activitypointer
. 是的,您必须使用
activityparty
而不是activitypointer
。 (not sure how your query didn't fail for column not found!?) (不知道您的查询如何不会因找不到列而失败!?)
// 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%");
For sake of completeness, here is the code.. 为了完整起见,下面是代码。
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);
}
Thanks to @Arun 感谢@Arun
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.