2015-01-30 6 views
0

나는 자신의 역할이 특정 값의 목록과 일치하는 사용자 지정 엔터티에서 '팀 구성원'목록을 반환하려고합니다. 일치하려는 속성은 선택 목록이며 이것이 내 오류의 원인인지 궁금해합니다. 내 코드는 다음과 같습니다.'예상치 못한 오류가 발생했습니다. 플랫폼'- 이것은 선택 목록을 잘못 쿼리했을 수 있습니다.

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; 
} 

먼저이 오류의 원인이 될 수있는 눈부신 부분이 있습니까? 둘째, 픽리스트 부분이라면 어떻게 수정해야합니까? 선택 목록 값이있는 선택 목록 인 특성을 쿼리하려면 어떻게해야합니까? 내가 INT []의 역할뿐만 아니라 foreach는 (역할 INT 역할)과 ce2.Values ​​= 새로운 객체를 데리고 내 방법을 편집 완료 알렉스의 정답에 따라

UPDATE

, [] {role} (여기서 int []는 허용되지 않습니다).

+0

확실하게 비교에 질식합니다 (문자열을 입력하면 picklist 값은 int입니다). – Alex

+0

@Alex - 제안 해 주셔서 감사합니다. 나는 int equivalents로 그것을 줄 것이다. – sr28

+0

@Alex - 그 트릭을 마쳤습니다. 훌륭해, 고마워! 이 질문에 답을하고 싶다면 올바른 것으로 표시해 드리겠습니다. – sr28

답변

2

비교할 때 코드가 질식합니다. 선택 목록 값은 int이고, 사용자는 string입니다. 유형이 일치하면 작동해야합니다.