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

C# 如何使用Linq在新的CRM 2011实体记录上设置选项列表值?,c#,linq,dynamics-crm-2011,dynamics-crm,C#,Linq,Dynamics Crm 2011,Dynamics Crm,我正在用C#创建新的实体记录。问题是,我的早期绑定Xrm类需要有问题的选项列表的整数值,但我所拥有的只是选项列表的字符串值 这就是我想做的。问题是“OptionListValue”是整数值。你知道的;汽车制造了一个巨大的 对我来说,唯一能做到这一点的方法是找出这个特定选项的价值吗?如果是这样,我应该使用什么API来获取它,以及如何使用它?我希望有一些Linq方法可以做到这一点。但我可能假设得太多了 public void CreateNewContactWithOptionListValue(s

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

这就是我想做的。问题是“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 );
    }
}

方法在不使用web服务的情况下执行此操作:

  • 为选项集生成枚举(您可以这样做)
  • 一旦有了enum,只需解析字符串值。大概是这样的:
  • public void CreateNewContactWithOptionListValue(字符串lastName,字符串theOptionListValue)
    {
    使用(var context=new-crmorganizationservicecoxt(new-CrmConnection(“Xrm”))
    {
    新的自定义值;
    if(!Enum.TryParse(optionListValue,out parsedValue))
    {
    抛出新的InvalidPlugineExecutionException(“未知值”);
    }
    var contact=新联系人()
    {
    LastName=LastName,
    OptionListValue=新的OptionSetValue((int)parsedValue)
    };
    上下文。创建(联系人);
    }
    }
    
    注意选项标签中的空格,因为它们在枚举中被删除了

    检查此答案它说明了如何检索optionset值。可能的重复项