【问题标题】:System.InvalidCastException ("Specified cast is not valid.") in a FetchXML query for an OptionSet AttributeSystem.InvalidCastException ("Specified cast is not valid.") 在 OptionSet 属性的 FetchXML 查询中
【发布时间】:2018-07-25 18:05:31
【问题描述】:

我正在尝试检索 FetchXML 查询返回的每个 OptionSet 的数值。检索到的值是别名,我想将别名值转换为整数并将每个值存储到列表中。系统每次都给我一个 InvalidCastException,我该怎么做才能解决这个问题???

这是正在使用的代码...

//Initialize serving Group list
                    var servingGroup = new List<int>();

                    string servingGroups = @"   <fetch distinct='true' >
                        <entity name='contract' >
                            <link-entity name='contractdetail' from = 'contractid' to = 'contractid' >
                                <attribute name='new_servinggroup' alias='new_servinggroup_av' />
                                <filter type='and' >
                                    <condition value='0' attribute='statecode' operator= 'eq' />
                                    <condition value='" + targetId + @"' attribute='contractid' operator= 'eq' />
                                </filter >                                          
                            </link-entity> 
                         </entity >
                     </fetch>";

                    EntityCollection servingGroups_result =
                        service.RetrieveMultiple(new FetchExpression(servingGroups));

                    foreach (var serving in servingGroups_result.Entities)
                    {
                        var value = (int)(serving.GetAttributeValue<AliasedValue>("new_servinggroup_av").Value);
                        servingGroup.Add(value);

                    }

【问题讨论】:

    标签: plugins dynamics-crm microsoft-dynamics dynamics-crm-2016 fetchxml


    【解决方案1】:

    请参阅下面自解释的数据转换或有效转换。您可以在立即窗口中执行此操作,或者在 Visual Studio 中调试时在快速监视中查看此操作。或者只需将鼠标悬停在每个变量上,即可从 VS 提示和智能感知中了解更多信息。

    AliasedValue aliasedValue = serving.GetAttributeValue<AliasedValue>("new_servinggroup_av");
    object aliasValue = aliasedValue.Value;
    OptionSetValue optionSet = (OptionSetValue)aliasValue;
    int optionSetValue = optionSet.Value;
    
    var value = (int)optionSetValue;
    

    替代:

    var value = (int)((OptionSetValue)(serving.GetAttributeValue<AliasedValue>("new_servinggroup_av").Value).Value);
    

    【讨论】:

      猜你喜欢
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 2013-03-12
      • 1970-01-01
      • 2011-04-26
      • 2020-05-26
      相关资源
      最近更新 更多