Dynamics crm Выражение запроса Email Entity с атрибутом - PullRequest
0 голосов
/ 19 декабря 2018

Привет, я застрял на том, как сделать запрос из фильтра сущностей электронной почты по адресу электронной почты в поле 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.Но этот метод возвращает ноль записей.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Для полноты вот код ..

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);
    }

Спасибо @ Арун

0 голосов
/ 19 декабря 2018

Вы должны использовать ConditionOperator.Like вместе с % вместо ConditionOperator.Equal

Подробнее

Обновление :

Я быстро сделал запрос в XrmToolBox Fetchxml Builder и скопировал оттуда эквивалент 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%");
...