Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从营销列表中批量删除成员?_C#_Dynamics Crm_Dynamics Crm 2013 - Fatal编程技术网

C# 如何从营销列表中批量删除成员?

C# 如何从营销列表中批量删除成员?,c#,dynamics-crm,dynamics-crm-2013,C#,Dynamics Crm,Dynamics Crm 2013,我在CRM Dynamics 2013中有一个场景,我需要删除数千条记录,基本上我有联系人、帐户、潜在客户,我需要从联系人中删除所有营销列表,其中所有者“待删除”,因此这些联系人不会收到列表,我想知道哪种方法最好,我想如果我创建了一个使用RemoveMemberListRequest的程序,那么我该如何使用sdk指定一个查询呢?sdk的基本意思是,从列表中删除成员,其中列表上的联系人的所有者设置为“挂起删除” 我发现这种方法有点令人担忧,因为我计划使用RemoveMemberListReques

我在CRM Dynamics 2013中有一个场景,我需要删除数千条记录,基本上我有联系人、帐户、潜在客户,我需要从联系人中删除所有营销列表,其中所有者“待删除”,因此这些联系人不会收到列表,我想知道哪种方法最好,我想如果我创建了一个使用RemoveMemberListRequest的程序,那么我该如何使用sdk指定一个查询呢?sdk的基本意思是,从列表中删除成员,其中列表上的联系人的所有者设置为“挂起删除”

我发现这种方法有点令人担忧,因为我计划使用RemoveMemberListRequest,它会查找EntityId(联系人)的guid和ListID(营销列表)的guid,问题是有许多列表和许多联系人属于此标准。重要的标准是关注所有者正在等待删除的联系人,这意味着我没有特定的方式来查询联系人添加到的特定市场营销列表,而是将待定删除作为所有者字段。我希望这是有意义的,任何帮助都将不胜感激

请看看我到目前为止有什么

public static Entity GetConatctWithPendingDeletion(IOrganizationService service)
    {
        QueryExpression qe = new QueryExpression();
        qe.EntityName = "contact";
        qe.ColumnSet = new ColumnSet("fullname", "ownerid", "parentcustomerid", "new_title");
        qe.Criteria.AddCondition("ownerid", ConditionOperator.Equal, "0F040671-1E83-E111-83B9-D067E5EBE694");// tbhis represents the optionset 'Pending Deletion'

        EntityCollection response = service.RetrieveMultiple(qe);

        return response.Entities[0];

        Console.WriteLine(response.Entities.Count());
        Console.ReadLine();

        RemoveMemberListRequest req = new RemoveMemberListRequest();
        req.EntityId = new Guid("xxxxxxx-xxx-xxx-xxx-xxxxxxx");//how do I specifty a list of Contact guids based on above code
        req.ListId = new Guid("xxxxxxx-xxxx-xxxx-xxxxx");// Also here , how do I specify the lists I want,

        RemoveMemberListResponse resp = (RemoveMemberListResponse)service.Execute(req);


    }

您应该能够通过
将营销列表成员关系实体加入到您的帐户/联系人/潜在客户查询中,并迭代生成的记录来解决此问题:

QueryExpression qe = new QueryExpression();
qe.EntityName = "contact";
qe.ColumnSet = new ColumnSet("fullname", "ownerid", "parentcustomerid", "new_title");
qe.Criteria.AddCondition("ownerid", ConditionOperator.Equal, "0F040671-1E83-E111-83B9-D067E5EBE694");

LinkEntity le = new LinkEntity();
le.EntityAlias = "lm";  // note the alias, you need it when accessing fields of the linked entity
le.Columns = new ColumnSet("listid");
le.JoinOperator = JoinOperator.Inner;
le.LinkFromEntityName = "contact";
le.LinkFromAttributeName = "contactid";
le.LinkToEntityName = "listmember";
le.LinkToAttributeName = "entityid";

eq.LinkEntities.Add(le);

EntityCollection response = service.RetrieveMultiple(qe);

// iterate over list members
foreach (var listmember in response.Entities)
{
    RemoveMemberListRequest req = new RemoveMemberListRequest();
    req.EntityId = listmember.Id;

    // the linked (relationship) entity fields are of type AliasedValue
    AliasedValue av = listmember.GetAttributeValue<AliasedValue>("lm.listid");
    EntityReference lm = (EntityReference)av.Value;
    req.ListId = lm.Id;

    RemoveMemberListResponse resp = (RemoveMemberListResponse)service.Execute(req);
}
QueryExpression qe=newqueryexpression();
qe.EntityName=“联系人”;
qe.ColumnSet=新列集(“全名”、“所有者ID”、“父客户ID”、“新标题”);
qe.Criteria.AddCondition(“ownerid”,ConditionOperator.Equal,“0F040671-1E83-E111-83B9-D067E5EBE694”);
LinkEntity le=新的LinkEntity();
le.EntityAlias=“lm”//请注意别名,在访问链接实体的字段时需要它
le.Columns=新列集(“listid”);
le.JoinOperator=JoinOperator.Inner;
le.LinkFromEntityName=“联系人”;
le.LinkFromAttributeName=“联系人ID”;
le.LinkToEntityName=“listmember”;
le.LinkToAttributeName=“entityid”;
等式linkenties.Add(le);
EntityCollection响应=service.RetrieveMultiple(qe);
//迭代列表成员
foreach(响应中的var listmember.Entities)
{
RemoveMemberListRequest req=新的RemoveMemberListRequest();
req.EntityId=listmember.Id;
//链接(关系)实体字段的类型为AliasedValue
AliasedValue av=listmember.GetAttributeValue(“lm.listid”);
EntityReference lm=(EntityReference)平均值;
req.ListId=lm.Id;
RemoveMemberListResponse resp=(RemoveMemberListResponse)服务。执行(req);
}

您应该能够通过
将营销列表成员关系实体加入到您的帐户/联系人/潜在客户查询中,并迭代生成的记录来解决此问题:

QueryExpression qe = new QueryExpression();
qe.EntityName = "contact";
qe.ColumnSet = new ColumnSet("fullname", "ownerid", "parentcustomerid", "new_title");
qe.Criteria.AddCondition("ownerid", ConditionOperator.Equal, "0F040671-1E83-E111-83B9-D067E5EBE694");

LinkEntity le = new LinkEntity();
le.EntityAlias = "lm";  // note the alias, you need it when accessing fields of the linked entity
le.Columns = new ColumnSet("listid");
le.JoinOperator = JoinOperator.Inner;
le.LinkFromEntityName = "contact";
le.LinkFromAttributeName = "contactid";
le.LinkToEntityName = "listmember";
le.LinkToAttributeName = "entityid";

eq.LinkEntities.Add(le);

EntityCollection response = service.RetrieveMultiple(qe);

// iterate over list members
foreach (var listmember in response.Entities)
{
    RemoveMemberListRequest req = new RemoveMemberListRequest();
    req.EntityId = listmember.Id;

    // the linked (relationship) entity fields are of type AliasedValue
    AliasedValue av = listmember.GetAttributeValue<AliasedValue>("lm.listid");
    EntityReference lm = (EntityReference)av.Value;
    req.ListId = lm.Id;

    RemoveMemberListResponse resp = (RemoveMemberListResponse)service.Execute(req);
}
QueryExpression qe=newqueryexpression();
qe.EntityName=“联系人”;
qe.ColumnSet=新列集(“全名”、“所有者ID”、“父客户ID”、“新标题”);
qe.Criteria.AddCondition(“ownerid”,ConditionOperator.Equal,“0F040671-1E83-E111-83B9-D067E5EBE694”);
LinkEntity le=新的LinkEntity();
le.EntityAlias=“lm”//请注意别名,在访问链接实体的字段时需要它
le.Columns=新列集(“listid”);
le.JoinOperator=JoinOperator.Inner;
le.LinkFromEntityName=“联系人”;
le.LinkFromAttributeName=“联系人ID”;
le.LinkToEntityName=“listmember”;
le.LinkToAttributeName=“entityid”;
等式linkenties.Add(le);
EntityCollection响应=service.RetrieveMultiple(qe);
//迭代列表成员
foreach(响应中的var listmember.Entities)
{
RemoveMemberListRequest req=新的RemoveMemberListRequest();
req.EntityId=listmember.Id;
//链接(关系)实体字段的类型为AliasedValue
AliasedValue av=listmember.GetAttributeValue(“lm.listid”);
EntityReference lm=(EntityReference)平均值;
req.ListId=lm.Id;
RemoveMemberListResponse resp=(RemoveMemberListResponse)服务。执行(req);
}

谢谢Filburt,我正要试试这个,我会在你的问题完成后立即将其标记为正确。我修复了我的示例代码-我错过了AliasedValue字段的.Value属性。谢谢Filburt,我正要试试这个,我将在问题完成后立即标记您的问题。我修复了我的示例代码-我错过了AliasedValue字段的.Value属性。