繁体   English   中英

Dynamics crm查询表达式电子邮件实体,具有to属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM