Dynamics crm Выражение запроса Email Entity с атрибутом
Привет, я застрял на том, как запросить от фильтра сущности электронной почты по адресу электронной почты в 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 ответа
Для полноты вот код..
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
Вы должны использовать 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%");