CRM 2011插件 - 查询与数组中的值匹配的记录

时间:2014-02-11 17:43:42

标签: c# dynamics-crm-2011

我刚刚发现这个伟大的网站,并希望提前感谢所有人的帮助。

我正在开发一个插件,可以更新联系人的电子邮件地址,联系人的电子邮件地址与阵列中的某个电子邮件相匹配。我们使用第三方营销工具发送大量电子邮件广告系列。我们希望获取所有软缓存电子邮件并更新CRM并清除系统中的错误电子邮件。我有一个想法是创建一个插件,我声明一个字符串数组,其中包含所有退回的电子邮件地址。然后运行联系人查询,其中电子邮件地址与数组中的任何一个值匹配。如果匹配,我会简单更新电子邮件地址字段。这样的事情可能吗?

我知道如何设置数组和查询记录,但我似乎无法找到一个示例,即查询查找联系人电子邮件地址以匹配数组中的任何一个值。我只找到了从数组中查找特定值的示例,例如'contact.emailaddress =“name@email.com”'。

再次感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

可能是的,但您必须逐步完成整个阵列。

所以第一部分:我假设您知道如何在插件中识别该数组。

第二部分:您已经知道如何向Contact实体查询特定的电子邮件地址

第3部分:重复您找到的示例,找到您所拥有的电子邮件地址数组中每个项目的contact.emailaddress =“name@email.com”。

foreach (string email in emailAddressArrayFrom3rdPartyTool)
{
    //Query for the contacts that match that e-mail address here
    //Update Contacts so that the e-mail address is removed.
}

您还可以定义一个列表,并使用要更新它的联系人填充它。然后,您可以在追踪所有记录时调用更新。

更新:你也可以去获取XML路线:(更多信息:http://msdn.microsoft.com/en-us/library/gg328117.aspx

string fetch = @"
   <fetch mapping='logical'>
     <entity name='contact'> 
        <attribute name='contactId'/> 
           <filter> 
              <condition attribute='emailaddress' operator='in'>
                    <value>List of Array emails here</value>
                    <value>List of Array emails here</value>
                    <value>List of Array emails here</value>
                </condition>
           </filter> 
     </entity> 
   </fetch> "; 

EntityCollection result = _serviceProxy.RetrieveMultiple(new FetchExpression(fetch));

foreach (var c in result.Entities)
   {
   System.Console.WriteLine(c.Attributes["name"]);
   }