C# ';平台';发生意外错误这可能是因为错误地查询了拣选单吗?

C# ';平台';发生意外错误这可能是因为错误地查询了拣选单吗?,c#,dynamics-crm,dynamics-crm-4,C#,Dynamics Crm,Dynamics Crm 4,我试图从自定义实体返回一个“团队成员”列表,其中他们的角色匹配一个特定值列表。我试图匹配的属性是一个选择列表,我想知道这是否导致了我的错误。这是我的密码: public static BusinessEntityCollection GetTeamMembers(string BU, string[] roles) { BusinessEntityCollection TeamMembers = new BusinessEntityCollection(); ColumnSet

我试图从自定义实体返回一个“团队成员”列表,其中他们的角色匹配一个特定值列表。我试图匹配的属性是一个选择列表,我想知道这是否导致了我的错误。这是我的密码:

public static BusinessEntityCollection GetTeamMembers(string BU, string[] roles)
{
    BusinessEntityCollection TeamMembers = new BusinessEntityCollection();

    ColumnSet cols = new ColumnSet();
    cols.Attributes = new string[] { "new_teamid", "new_id", "new_name", "ownerid", "new_rolepicklist" };

    QueryExpression query = new QueryExpression();
    query.ColumnSet = cols;
    query.EntityName = EntityName.new_team.ToString();

    List<ConditionExpression> ceList = new List<ConditionExpression>();

    foreach (string role in roles)
    {
        //I suspect it this block is where the problem occurs as 'new_rolepicklist' is a picklist, and 'role' will be something like 'Manager' (a picklist value).
        ConditionExpression ce2 = new ConditionExpression();
        ce2.AttributeName = "new_rolepicklist";
        ce2.Operator = ConditionOperator.Like;
        ce2.Values = new string[]{role};

        ceList.Add(ce2);
    }

    FilterExpression filter = new FilterExpression();
    filter.Conditions = ceList.ToArray();
    filter.FilterOperator = LogicalOperator.Or;
    query.Criteria = filter;

    try
    {
        using (crmService)
        {
            TeamMembers = crmService.RetrieveMultiple(query); //ERROR
        }
    }
    catch (SoapException se)
    {
        throw new Exception("Error occurred retrieving Team Members for " + BU + ". " + se.Detail.InnerXml);
    }
    catch (Exception ex)
    {
        throw new Exception("Error occurred retrieving Team Members for " + BU + ". " + ex.Message);            
    }

    return TeamMembers;
}
公共静态BusinessEntityCollection GetTeamMembers(字符串BU,字符串[]角色)
{
BusinessEntityCollection团队成员=新建BusinessEntityCollection();
ColumnSet cols=新ColumnSet();
Attributes=newstring[]{“new_teamid”、“new_id”、“new_name”、“ownerid”、“new_rolepicklist”};
QueryExpression query=新建QueryExpression();
query.ColumnSet=cols;
query.EntityName=EntityName.new_team.ToString();
List ceList=新列表();
foreach(角色中的字符串角色)
{
//我怀疑这个块就是问题发生的地方,因为“new_rolepicklist”是一个选择列表,“role”类似于“Manager”(选择列表值)。
ConditionExpression ce2=新的ConditionExpression();
ce2.AttributeName=“新角色列表”;
ce2.Operator=ConditionOperator.Like;
ce2.Values=新字符串[]{role};
ceList.Add(ce2);
}
FilterExpression filter=新的FilterExpression();
filter.Conditions=ceList.ToArray();
filter.FilterOperator=逻辑运算符。或;
query.Criteria=filter;
尝试
{
使用(crmService)
{
TeamMembers=crmService.RetrieveMultiple(查询);//错误
}
}
捕获(SOAPSE异常)
{
抛出新异常(“检索“+BU+”+se.Detail.InnerXml”的团队成员时出错);
}
捕获(例外情况除外)
{
抛出新异常(“检索“+BU+”+ex.Message”的团队成员时出错);
}
返回团队成员;
}
首先,是否有任何明显的原因可能导致此错误?其次,如果它是挑选名单的一部分,我该如何修复它?如何查询具有picklist值的picklist属性

更新


按照Alex的正确答案,为了完成,我编辑了我的方法,将int[]角色以及foreach(角色中的int角色)和ce2。Values=newobject[]{role}(此处不允许使用int[])。

在进行比较时,您的代码被阻塞了:选择列表值的类型为
int
,但您正在输入
字符串
s。一旦类型匹配,它就会工作。

它肯定会被比较阻塞(你输入一个字符串,选择列表值是int)@Alex-谢谢你的建议。“我将用它们的int等价物试试看。@Alex-这就成功了。太棒了,谢谢!如果你想把它作为一个答案,我很乐意把它标记为正确的。