2015-01-30 4 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; 
} 

Во-первых, есть ли что-нибудь вопиюще очевидно, что, вероятно, будет причиной этой ошибки? Во-вторых, если это часть выбора, как мне ее исправить? Как я могу запросить атрибут, который является списком выбора со значением выбора?

UPDATE

После правильного ответа Алекса, завершение я редактировал мой метод взять ИНТ [] ролей, а также Еогеасп (интермедиат роль в ролях) и ce2.Values ​​= новый объект [] {role} (int [] здесь не допускается).

+0

Это, безусловно, задыхается от сравнений (вы кормите строку, значения picklist являются int) – Alex

+0

@Alex - спасибо за предложение. Я дам ему уйти со своими эквивалентами. – sr28

+0

@Alex - Вот и все. Блестяще, спасибо! Если вы хотите вставить это в качестве ответа, я рад отметить его как правильное. – sr28

ответ

2

Ваш код задыхается, когда дело доходит до сравнений: Значения выборки имеют тип int, но вы кормите string s. Как только типы совпадают, он должен работать.

 Смежные вопросы

  • Нет связанных вопросов^_^