如何使用Linq在新的CRM 2011实体记录上设置选项列表值?

时间:2013-06-06 18:57:55

标签: c# linq dynamics-crm-2011 dynamics-crm

我正在用C#创建新的实体记录。问题是我早期绑定的Xrm类期望有问题的Option List的整数值,但我所拥有的只是Option List的字符串值。

所以,这就是我想做的事情。问题是所讨论的“OptionListValue”是整数值。你懂;自动创建的那个是巨大的。

通过找出特定选项的价值,我是唯一能做到这一点的方法吗?如果是这样,我使用什么API来获取它以及如何使用它?我期待有一些Linq方法这样做。但我可能会假设太多。

public void CreateNewContactWithOptionListValue(string lastName, string theOptionListValue)
{
    using ( var context = new CrmOrganizationServiceContext( new CrmConnection( "Xrm" ) ) )
    {
        var contact = new Contact()
        {
            LastName = lastName,
            OptionListValue = theOptionListValue // How do I get the proper integer value from the CRM?
        };
        context.Create( contact );
    }
}

1 个答案:

答案 0 :(得分:0)

不使用网络服务的方法:

  1. 为选项集生成枚举(here是如何做到的)
  2. 一旦你有枚举,只需解析字符串值。这样的事情:
  3.     public void CreateNewContactWithOptionListValue(string lastName, string theOptionListValue)
        {
            using (var context = new CrmOrganizationServiceContext(new CrmConnection("Xrm")))
            {
                new_customoptionset parsedValue;
                if (!Enum.TryParse<new_customoptionset>(theOptionListValue, out parsedValue))
                {
                    throw new InvalidPluginExecutionException("Unknown value");
                }
                var contact = new Contact()
                {
                    LastName = lastName,
                    OptionListValue = new OptionSetValue((int)parsedValue)
                };
                context.Create(contact);
            }
        }
    

    请注意选项标签中的空格,因为它们会在枚举中删除