Dynamics crm 2011 从活动响应中检索客户Id的智能方法
我正在从CRM 2011检索客户id。 我正在使用活动响应实体,但它适用于包含客户查找的任何其他实体 到目前为止,我找到的唯一方法是:Dynamics crm 2011 从活动响应中检索客户Id的智能方法,dynamics-crm-2011,Dynamics Crm 2011,我正在从CRM 2011检索客户id。 我正在使用活动响应实体,但它适用于包含客户查找的任何其他实体 到目前为止,我找到的唯一方法是: var customerGuid = ((EntityReference) ((EntityCollection) ebCampaignResponse.Entity.Attributes["customer"]).Entities[0] .Attributes["partyid"]).Id; 我认为这太复杂了
var customerGuid =
((EntityReference)
((EntityCollection) ebCampaignResponse.Entity.Attributes["customer"]).Entities[0]
.Attributes["partyid"]).Id;
我认为这太复杂了,我错过了一些东西。有没有更好的办法
改进代码:
var customerGuid = Guid.Empty;
EntityCollection customer = null;
if (ebCampaignResponse.Entity != null && ebCampaign.Entity.Contains("customer"))
customer = (EntityCollection) ebCampaignResponse.Entity.Attributes["customer"];
if(customer != null && customer.Entities != null && customer.Entities[0] != null)
customerGuid = ((EntityReference)(customer.Entities[0]
.Attributes["partyid"])).Id;
如果customer属性为null,则代码容易出错;虽然您检索它的方式是正确的,但我更希望这样做的方式更简洁,如下所示
var customer = ebCampaignResponse.Entity.GetAttributeValue<EntityCollection>("customer").Entities.FirstOrDefault();
if(customer != null) {
var customerGuid = customer.GetAttributeValue<EntityReference>("partyid").Id;
}
如果在if语句中声明Guid,则实体集合没有FirstOrDefault和GetAttributeValue方法。该if将包含您的整个逻辑,我的意思是,如果您的客户最初不在场,那么进一步处理有什么意义。这一切都取决于你想做什么。正如我所说,这只是您代码的格式化版本。对于EntityCollection,很抱歉我错过了那里的
Entities
关键字。代码现在已更正。当客户为空时,这没有帮助。我仍然得到一个错误,说给定的键不在字典中。我已经更新了代码以包含这种可能性。伙计,堆栈溢出是为了帮助你找到出路,而不是为你编码。这些错误是最常见的错误,也是最具描述性的错误KeyNotFoundException
表示客户不在场,因此相应地修改代码并在代码中处理这种情况。
var customer = ebCampaignResponse.Entity.GetAttributeValue<EntityCollection>("customer").Entities.FirstOrDefault();
if(customer == null) return;
var customerGuid = customer.GetAttributeValue<EntityReference>("partyid").Id;