我需要将某些电子邮件标记为 secret 。除非您具有特定角色,否则这些电子邮件不应在 CRM 系统中可见。我在电子邮件实体上创建了一个“ secret ”标志,并在电子邮件实体的 RetrieveMultiple 上创建了一个插件,用于过滤掉所有“ secret ”= true 的电子邮件。
但是,电子邮件记录在“事件”下仍然可见。我在 activitypointer 实体的 retrievemultiple 上创建了另一个插件,但我无法创建一个查询来显示除标记为“ secret ”的电子邮件之外的所有事件(包括电子邮件)。谁能帮我解决这个问题的 linq 查询?这是我创造的
QueryExpression objQueryExpression1 = (QueryExpression)context.InputParameters["Query"];
objQueryExpression1.LinkEntities.Add(new LinkEntity("activitypointer", "email", "activityid", "activityid", JoinOperator.LeftOuter));
objQueryExpression1.LinkEntities[0].EntityAlias = "filteredemails";
objQueryExpression1.LinkEntities[0].LinkCriteria.AddCondition("csiro_confidential", ConditionOperator.Equal, true);
最佳答案
你好,你可以按照下面的方式做,
QueryExpression objQueryExpression1 = (QueryExpression)context.InputParameters["Query"];
if (objQueryExpression1.EntityName == "email")
{
objQueryExpression1.Criteria = new FilterExpression(LogicalOperator.And)
{
Conditions =
{
new ConditionExpression("new_confidential",ConditionOperator.NotEqual,true)
}
};
}
else if (objQueryExpression1.EntityName == "activitypointer")
{
QueryExpression e = new QueryExpression("email")
{
Criteria = new FilterExpression(LogicalOperator.And)
{
Conditions =
{
new ConditionExpression("csiro_confidential",ConditionOperator.NotEqual,true)
}
}
};
var filteredOutEmails = service.RetrieveMultiple(e).Entities.Select(xc => xc.Id.ToString()).ToArray();
objQueryExpression1.Criteria.AddCondition("activityid", ConditionOperator.NotIn,filteredOutEmails);
}
context.InputParameters["Query"] = objQueryExpression1;
Register Your plugin for both email and activitypointer entities, on Pre-operation with Synchronous mode
关于c# - CRM 2016 RetrieveMultiple 用于过滤电子邮件的插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46944711/