在OptionSet属性的FetchXML查询中,System.InvalidCastException(“指定的强制转换无效。”)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在OptionSet属性的FetchXML查询中,System.InvalidCastException(“指定的强制转换无效。”)相关的知识,希望对你有一定的参考价值。

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

Invalid Cast Exception

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

//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);

                    }
答案

请参阅以下自我解释的数据转换或有效的转换。您可以在立即窗口中执行此操作,或在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);

以上是关于在OptionSet属性的FetchXML查询中,System.InvalidCastException(“指定的强制转换无效。”)的主要内容,如果未能解决你的问题,请参考以下文章

通过 javascript 在网格中检索 fetchxml

crm使用FetchXml分组聚合查询

通过javascript检索网格中的fetchxml

Microsoft Dynamics CRM 在 SQL Server 中的何处存储 OptionSet 值?

CRM FetchXML activitytypecode 结果没有枚举 int 值

Dynamics CRM - 如何獲取 OptionSet/TwoOption 類型字段的 Label