C# - 仅使用选项的字符串名称设置 CRM OptionSetValue

C# - Set CRM OptionSetValue using only the string name of the option

是否可以仅使用选项的名称/标签为 Dynamics CRM 设置新的 OptionSetValue?

例如,我有以下选项集:

1 : Male
2 : Female

如果我没有 int 值,是否可以使用 string 标签代替?比如...

my_optionSet = new OptionSetValue(Male)

在你的情况下,我会使用 Dictionary<string, int> 作为映射器 table 然后你可以传递你的字符串值,然后在 OptionSetValue [=16] 中设置 int 参数=].

Dictionary<string, int> mapperT = new Dictionary<string, int>();
mapperT.Add("Male", 1);
mapperT.Add("Female", 2);
my_optionSet = new OptionSetValue(mapperT["Male"]);

我们用enum来实现。

public enum Gender
{
    Male = 864630000,
    Female = 864630001,    
};

my_optionSet = new OptionSetValue((int)Gender.Male);

这些将是预定义的 key:value 对,永远不会在环境之间改变。当您考虑在该属性中添加新选项时避免代码部署并改进为仅架构解决方案部署时,您可以投资 Retrieve OptionSet Metadata

除了阿润的回答。您可以生成 Early-Bound 类 并获取为您生成的选项集。 XrmToolbox 中有一个工具可以做到这一点: