Próbuję utworzyć zapytanie Dynamics CRM 4, aby móc otrzymywać zdarzenia kalendarza o nazwie "Event A" lub "Event B".Budowanie QueryExpression, gdzie pole nazwy to A lub B
A QueryByAttribute nie wydaje się wykonywać zadania, ponieważ nie mogę określić warunku, w którym pole o nazwie "event_name" = "Event A" "event_name" = "Event B".
Podczas korzystania z QueryExpression znalazłem FilterExpression stosuje się do Referencing Entity. Nie wiem, czy FilterExpression może być w ogóle użyta w Entired Entity. Poniższy przykład jest podobny do tego, co chcę osiągnąć, chociaż zwróciłoby to pusty zestaw wyników, ponieważ będzie szukało elementu o nazwie "my_event_response" dla atrybutu "name". Wygląda na to, że będę musiał wykonać kilka zapytań, aby to uzyskać, ale jest to mniej efektywne niż wtedy, gdy mogę przesłać je wszystkie naraz.
ColumnSet columns = new ColumnSet();
columns.Attributes = new string[]{ "event_name", "eventid", "startdate", "city" };
ConditionExpression eventname1 = new ConditionExpression();
eventname1.AttributeName = "event_name";
eventname1.Operator = ConditionOperator.Equal;
eventname1.Values = new string[] { "Event A" };
ConditionExpression eventname2 = new ConditionExpression();
eventname2.AttributeName = "event_name";
eventname2.Operator = ConditionOperator.Equal;
eventname2.Values = new string[] { "Event B" };
FilterExpression filter = new FilterExpression();
filter.FilterOperator = LogicalOperator.Or;
filter.Conditions = new ConditionExpression[] { eventname1, eventname2 };
LinkEntity link = new LinkEntity();
link.LinkCriteria = filter;
link.LinkFromEntityName = "my_event";
link.LinkFromAttributeName = "eventid";
link.LinkToEntityName = "my_event_response";
link.LinkToAttributeName = "eventid";
QueryExpression query = new QueryExpression();
query.ColumnSet = columns;
query.EntityName = EntityName.mbs_event.ToString();
query.LinkEntities = new LinkEntity[] { link };
RetrieveMultipleRequest request = new RetrieveMultipleRequest();
request.Query = query;
return (RetrieveMultipleResponse)crmService.Execute(request);
Byłbym wdzięczny za porady, jak zdobyć potrzebne dane.